在运行中设置数据并通知所有控制器

在运行中设置数据并通知所有控制器

问题描述:

我正在加载角度应用程序的.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); 
    }); 
}); 
+0

做u有任何样品小提琴,米不能理解用于loadDefer在哪里? – anam 2015-03-02 14:28:48

+1

[这里](http://jsfiddle.net/d14nLuv0/)结果是空的,但你看它是如何工作的......,看看控制台 – capgeti 2015-03-02 14:44:43