当我们更改到其他页面时,范围是否会更改?

时间:2017-03-16 01:40:36

标签: angularjs angularjs-scope

我在控制器中创建了一个带$scope的变量。显然,$scope仅对该控制器应用(可用)。我们可以在其他页面的其他控制器中使用$scope吗?

2 个答案:

答案 0 :(得分:2)

每个控制器都有自己的$scope。尽管页面的所有控制器都可以访问$rootScope,但这不是推荐的方法,因为它类似于app模块的全局变量容器。首选方法是使用自定义服务。

使用$ rootScope:

$rootScope.value = "shared value using $rootScope";

这可以在任何视图或控制器中分别以$root.value$rootScope.value进行访问。

使用自定义服务:

$scope.shareCustom = function() {
  CustomService.value = "shared value using CustomService";
};

可以在任何注入CustomService并将其附加到$scope的控制器中访问。

片段:

.controller('AnyCtrl', function ($scope, CustomService) {
  $scope.customService = CustomService;
});

<p>{{customService.value}}</p>

我已经Plunker Demo说明了这两种数据共享方式。

答案 1 :(得分:1)

不,你不能。当您移动到另一个页面时,新控制器将被初始化。

为了使用相同的变量,请尝试考虑使用工厂/服务共享变量。你也可以使用$ rootScope但不推荐使用它。