我$scope.data.xxxx
在 AngularJS 应用程序的很多地方都使用了 etc。现在我在每个控制器中声明 $scope.data ,如下所示:
$scope.data = {}
有没有更好的地方让我这样做。例如,在 .config 或 .run 中设置我的 app.js 文件时,我可以更好地执行此操作吗?
我$scope.data.xxxx
在 AngularJS 应用程序的很多地方都使用了 etc。现在我在每个控制器中声明 $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;
})
您至少可以使用 2 个选项:
$rootScope
作为存储使用。
使用service
. 服务是可以注入任何控制器并在控制器范围内公开它们的值的单例。
我建议你使用service
(至少对我来说,它是更好的方法)。从$rootScope
所有控制器都可以看到您的全局变量,
很好的例子如何使用服务作为你可以看到的存储Fiddle
并不真地。如果您的应用程序具有其他嵌套在其中的根控制器,则可以在其中设置$scope.data
,但这可能不会满足您的要求-您的所有控制器都将使用相同的data
对象。如果一个控制器更改了它,它也会在每个其他控制器中更改。
因为(我假设)您希望$scope.data
在每个控制器中都有一个单独的控制器,所以您应该继续分别初始化每个控制器。