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

Will each use of an angular Controller create a new Instance of if?

本文关键字:一个 实例 if 创建 控制器      更新时间:2023-09-26

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

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

从角度文档

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

因此,是的,将创建控制器的一个新实例。

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

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