2015-11-03 117 views
0

我在找AngularJS的最佳实践: 我需要在嵌套控制器之间共享json ajax响应。 Controller1-> Controller2-> Controller3AngularJS:设置全局变量AJAX

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

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

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

感谢

+0

http://stackoverflow.com/questions/20181323/passing-data-between-controllers-in-angular-js – hurricane

回答

1

创建发布/订阅服务或工厂,并订阅从控制器2到数据变化的方法和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); 
 
     } 
 
    }; 
 
    });

+0

这正是我一直在寻找。谢谢尤里。 – l2silver

1

你可以把价值$rootScope.variable和访问后,从任何其他控制器(如$scope.variable