我创建了一个角度控制器UserController
。
我的index.html中有一个像这样:
<nav class="navbar navbar-default" ng-controller="UserController as account">
<span ng-model="somePropertieInsideMyController"></span>
</nav>
第二次通过app.main.js中的$routeProvider
,如下所示:
.when('/login', {
controller: 'UserController',
controllerAs: "account",
templateUrl: 'views/login.html'
})
我的问题是,在加载页面后,我是否有两个控制器实例,或者只有一个控制器两个,这两个部分都绑定并共享$scope
?
如果创建了两个实例,我如何在两个外观中共享可能在控制器内更新的属性。
答案 0 :(得分:3)
当Controller通过ng-controller指令附加到DOM时,Angular将使用指定的Controller的构造函数实例化一个新的Controller对象。将创建一个新的子范围,并将其作为$ scope的构造函数的可注入参数提供。
所以是的,将创建一个新的控制器实例。
要在控制器之间共享数据,最常用的方法是使用service。
答案 1 :(得分:1)
这样你将有2个不同的$scope
。以你的方式使用相同的控制器是很奇怪的。通常,特定控制器由$routeProvider
提供,您可以在主页面中考虑一种全局控制器。