我試圖重構已使用Ajax來獲取一些serverdata,然後將其連接到$rootScope
爲控制器和服務自舉應用前,拿起一個應用程序,我一直在試圖用$q
plnkr:http://plnkr.co/edit/22yQUlyE9nbQ0WVjxWxY
在那個plnkr我想有一個服務返回一些數據爲少數控制器使用。
app.service('data', function($q, $window, $timeout) {
var promise = $q.defer();
promise.promise.foo = 'Dang!';
$timeout(function() {
console.log('resolve promise');
promise.resolve({
foo: 'bar',
baz: 'zot'
});
}, 1000);
console.log('return promise');
return promise.promise
});
我使用$ routeProvider的決心屬性這樣
app.config(function($routeProvider) {
$routeProvider.when('/', {
controller: 'MainController',
templateUrl: 'data.html',
resolve: {
data: 'data'
}
});
});
但是,當我試圖解析的承諾$範圍的「富」屬性分配在我的控制器之一是隻是出錯了。
app.controller('MainController', function($scope, data) {
$scope.main = data.foo;
});
app.controller('Controller1', function($scope, data) {
$scope.controller1 = data;
});
的$scope
時承諾解決沒有更新和實際承諾對象的foo
財產上$scope
最終成爲可以http://plnkr.co/edit/22yQUlyE9nbQ0WVjxWxY?p=preview
可以看出所以我在做的事情我絕對不應該在此通過將承諾的屬性分配給$scope
?我的印象是,這條路線的解析性意味着,在承諾解決之前,什麼都不應該初始化。
似乎你有時會有最好的一站,並重新運行預覽版的實際工作 – ivarni