我在我的AngularJS應用程序的許多地方使用$scope.data.xxxx
等。現在我宣佈$ scope.data在每個控制器是這樣的:
$scope.data = {}
是否有更好的地方爲我做到這一點。例如,我可以在.config或.run中設置我的app.js文件時更好地執行此操作嗎?
我在我的AngularJS應用程序的許多地方使用$scope.data.xxxx
等。現在我宣佈$ scope.data在每個控制器是這樣的:
$scope.data = {}
是否有更好的地方爲我做到這一點。例如,我可以在.config或.run中設置我的app.js文件時更好地執行此操作嗎?
許多地方,你可以把它
var app= angular.module('myApp',[])
隨着服務
app.factory('myData',function(){
return { foo:'bar'}
});
由於價值
app.value('myData', { foo:'bar'});
恆定
app.constant('myData', { foo:'bar'});
在每種情況下將在控制器指令注入myData
,其他服務等來訪問它
app.controller('SomeController',function($scope, myData){
$scope.data=myData;
})
我認爲全球'myData'可以更新在一個頁面,並持續到其他頁面。但不知何故,它沒有奏效。您能否向我們展示如何執行更新?謝謝。 – Blaise
@Blaise應該很容易在工廠或服務中創建一個getter和setter – charlietfl
不是。如果你的應用程序有一個其他的嵌套的根控制器,你可以在那裏設置$scope.data
,但這可能不會做你想做的事 - 你的所有控制器都會使用相同的data
對象。如果一個控制器改變它,它也會在每個其他控制器中改變。
因爲(我想)你想在每個控制器中單獨使用$scope.data
,你應該繼續分別初始化每一個控制器。
可以使用至少2種選擇:
使用$rootScope
作爲存儲。使用service
。服務是可以注入任何控制器並在控制器範圍內公開它們的值的單例。
我建議你使用service
(至少對我來說,它是更好的方法)。從$rootScope
所有控制器可以看到你的全局,
很好的例子如何使用服務作爲存儲你可以在Fiddle
看到的是'$在任何情況下scope.data'相同的值?它是配置嗎? –