在运行中设置数据并通知所有控制器
问题描述:
我正在加载角度应用程序的.run
中的数据,我的问题是,我想在不同的控制器中使用数据,但是Ajax可能需要一段时间才能加载数据。有没有办法保存控制器或通知控制器,以便控制器可以从服务中获取数据而不是$http
。在运行中设置数据并通知所有控制器
listingApp.run(['ListingData', '$http','$q', function (ListingData, $http,$q) {
// // make the api request here
var listing_def = $q.defer();
$http.get('/api/products/7569356/').then(function (result) {
ListingData.setData(result);
listing_def.resolve(data);
});
return listing_def.promise;
}]);
答
使用promises
例如:
angular.module('test', []) // Not testet
.run(function($http, $q, $rootScope) {
$rootScope.loadData = (loadDefer = $q.defer()).promise
$http.get('url').then(function(result) {
loadDefer.resolve(result);
})
})
.controller('ExampleCtrl', function($scope) {
$scope.loadData.then(function(result) {
console.log(result);
});
});
做u有任何样品小提琴,米不能理解用于loadDefer在哪里? – anam 2015-03-02 14:28:48
[这里](http://jsfiddle.net/d14nLuv0/)结果是空的,但你看它是如何工作的......,看看控制台 – capgeti 2015-03-02 14:44:43