AngularJS:设置全局变量AJAX

时间:2015-11-03 13:14:56

标签: ajax angularjs

我正在寻找AngularJS的最佳实践: 我需要在嵌套控制器之间共享json ajax响应。 Controller1-> Controller2-> Controller3

现在我有一个工作版本,只需在controller1中设置响应的$ scope.variable,其他控制器通过调用相同的变量来访问它。

我尝试过创建一个全局服务,但问题是我在控制器中进行ajax调用,在ajax调用完成之前,全局变量默认为所有其他控制器的null。

我只想了解在这种情况下最佳方法是什么。

由于

2 个答案:

答案 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);
      }
    };
  });