每次使用角度控制器是否会创建一个新的实例if?

时间:2016-03-24 07:32:38

标签: javascript angularjs

我创建了一个角度控制器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

如果创建了两个实例,我如何在两个外观中共享可能在控制器内更新的属性。

2 个答案:

答案 0 :(得分:3)

来自angular documentation

  

当Controller通过ng-controller指令附加到DOM时,Angular将使用指定的Controller的构造函数实例化一个新的Controller对象。将创建一个新的子范围,并将其作为$ scope的构造函数的可注入参数提供。

所以是的,将创建一个新的控制器实例。

要在控制器之间共享数据,最常用的方法是使用service

答案 1 :(得分:1)

这样你将有2个不同的$scope。以你的方式使用相同的控制器是很奇怪的。通常,特定控制器由$routeProvider提供,您可以在主页面中考虑一种全局控制器。