我在控制器中创建了一个带$scope
的变量。显然,$scope
仅对该控制器应用(可用)。我们可以在其他页面的其他控制器中使用$scope
吗?
答案 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但不推荐使用它。