2015-11-03 128 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