我正在寻找AngularJS的最佳实践: 我需要在嵌套控制器之间共享json ajax响应。 Controller1-> Controller2-> Controller3
现在我有一个工作版本,只需在controller1中设置响应的$ scope.variable,其他控制器通过调用相同的变量来访问它。
我尝试过创建一个全局服务,但问题是我在控制器中进行ajax调用,在ajax调用完成之前,全局变量默认为所有其他控制器的null。
我只想了解在这种情况下最佳方法是什么。
由于
答案 0 :(得分:1)
您可以将值放在$rootScope.variable
中,然后从任何其他控制器访问它(如$scope.variable
)
答案 1 :(得分:1)
从您的controller2和3创建发布者/订阅者服务或工厂和订阅方法以更改数据。就像这样:
angular
.module('')
.factory('GlobalAjaxVariable', function() {
var subscribers = [];
function publish(data) {
callbacks.forEach(function(clb) {
clb(data);
});
}
return {
setData: function(ajaxData) {
publish(ajaxData);
},
addSubscriber: function(clb) {
subscribers.push(clb);
}
};
});