【发布时间】:2014-02-12 06:42:00
【问题描述】:
在下面的人为示例中,我已经弄清楚了如何使用共享服务在两个 AngularJS 控制器之间共享数据:
(功能fiddle)
var app = angular.module('myApp', []);
app.factory('UserData', function() {
var data = {foo: 'bar'};
return {
getData: function() {
console.log('getData');
return data;
},
setData: function(newData) {
data = newData;
}
};
});
function MainCtrl($scope, UserData) {
console.log('MainCtrl');
console.log(UserData.getData());
}
MainCtrl.$inject = ['$scope', 'UserData'];
function JobListCtrl($scope, UserData) {
console.log('JobListCtrl');
console.log(UserData.getData());
}
JobListCtrl.$inject = ['$scope', 'UserData'];
我的问题是我希望 UserData 中保存的数据来自 Ajax 调用(可能使用 $http)。
我尝试在 UserData 工厂函数中进行 Ajax 调用,但由于它是异步运行的,因此 MainCtrl 和 JobListCtrl 在 UserData 服务中实际包含任何数据之前执行。
有人能给我一些关于如何设置的指导吗?
【问题讨论】:
-
请参阅stackoverflow.com/questions/12505760/… 了解如何使用承诺,然后让您的控制器等待它被解决。
-
@MarkRajcok,成功了。谢谢!
标签: javascript angularjs