angularjs – 为什么这个工厂返回$$状态对象而不是response.data
发布时间:2020-12-17 07:29:42 所属栏目:安全 来源:网络整理
导读:所以我在服务器中有一组对象,我想在页面加载时填充ng-repeat. 我有一个工厂从服务器上的资源中获取列表,如下所示: app.factory('objectArray',['$http',function($http) { // This is returning a $$state object // instead of response.data... return $h
所以我在服务器中有一组对象,我想在页面加载时填充ng-repeat.
我有一个工厂从服务器上的资源中获取列表,如下所示: app.factory('objectArray',['$http',function($http) { // This is returning a $$state object // instead of response.data... return $http.post('/get_collection').then(function(response) { console.log(response.data); return response.data; }); }]); 在使用ui-router和state声明中的resolve属性之前,我已经有了这个代码.但是当将这个工厂直接注入我的控制器时,而不是获得response.data我得到一个$$状态对象. 我的控制器看起来像这样: app.controller('applicationController',['$scope','objectArray',function($scope,objectArray) { $scope.array = objectArray; console.log($scope.array); }]);
$http服务返回的内容(因此objectArray服务是)被称为promise.您可以通过注册在数据可用时调用的回调函数来访问实际数据,即当对http请求的响应从服务器返回时:
objectArray.then(function(data) { $scope.array = data; }); 使用resolve时直接访问数据的原因是路由器在resolve函数返回promise时等待promise的解析.只有这样,它才会从promise中提取数据并将数据注入控制器. 为了更好地理解承诺,您可以阅读the following article(及其sequel). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |