service 里面获取数据,为什么获取不到,界面是空的,哪位高手帮忙看下
发布于 1年前 作者 maxer028 1263 次浏览 来自 问答

controller

$scope.data = Info.getData();
ionicPopover xx; //为什么界面上popover的没显示出来

service
var getGoods = function () {
var promise = $http.jsonp("http://xxx).success(function(response){ return response; }).error(function(error){ alert(‘network error,failed to get data’);
}); };

  return {
    getData : getGoods
  }
1 回复

因为$httpProvide 返回的是一个promise,即数据是异步返回,它不会马上返回给你结果,你需要这样写才能得到你的数据。 你的service可能像是这样:

angular.module('PROJECT.services', [])
.factory("DataService", function($http) {
    return {
        getlist: function() {
            var defer = $q.defer();
            $http.post(config).success(function(data) {
                defer.solve(data);
            }).error(function(error) {
                defer.reject(error);
            });
            return defer.promise;
        };
    }
});
在你的控制器里,使用service的getlist,可以保证你获取到数据。
angular.module('PROJECT.controllers', ['ionic'])
.controller('YourCtrl', function(DataService) {
    service.getlist().then(function(data){
         //do something with data
    });
}
回到顶部