2

$scope.data.xxxx在 AngularJS 应用程序的很多地方都使用了 etc。现在我在每个控制器中声明 $scope.data ,如下所示:

$scope.data = {}

有没有更好的地方让我这样做。例如,在 .config 或 .run 中设置我的 app.js 文件时,我可以更好地执行此操作吗?

4

3 回答 3

5

很多地方都可以放

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;
})
于 2013-11-09T19:12:35.327 回答
3

您至少可以使用 2 个选项:

  • $rootScope作为存储使用。

  • 使用service. 服务是可以注入任何控制器并在控制器范围内公开它们的值的单例。

我建议你使用service(至少对我来说,它是更好的方法)。从$rootScope 所有控制器都可以看到您的全局变量

很好的例子如何使用服务作为你可以看到的存储Fiddle

于 2013-11-09T19:13:53.130 回答
1

并不真地。如果您的应用程序具有其他嵌套在其中的根控制器,则可以在其中设置$scope.data,但这可能不会满足您的要求-您的所有控制器都将使用相同的data对象。如果一个控制器更改了它,它也会在每个其他控制器中更改。

因为(我假设)您希望$scope.data在每个控制器中都有一个单独的控制器,所以您应该继续分别初始化每个控制器。

于 2013-11-09T19:05:35.213 回答