【发布时间】:2013-06-08 01:31:38
【问题描述】:
我一直看到关于自定义控制器是使用“new”关键字实例化还是仅应用于 $scope 对象的相互矛盾的信息。
文档网站说,
Angular 将控制器构造函数应用于(在 JavaScript 的 Function#apply 的意义上)一个新的 Angular 范围对象,该对象设置了初始范围状态。这意味着 Angular 永远不会创建控制器类型的实例(通过在控制器构造函数上调用 new 运算符)。构造函数始终应用于现有范围对象。
但似乎在 Angular 1.2 中,有一个 "as" 构造将控制器重命名为其他名称,如下所示:
<body ng-controller="DemoController as demo">
<tr ng-repeat="student in demo.students">
<td>{{student.name}}</td>
</tr>
</body>
function DemoController() {
this.students = [...]
}
所以这看起来像是使用new 关键字实例化控制器。
是哪一个?有人可以澄清一下吗?
【问题讨论】:
-
我对 angular 不是很熟悉,但它 看起来 就像
as只是一个别名。为什么as在你看来与new有任何关系? -
这个问题和angularjs-directive有关系吗?
-
因为在 DemoController() 的定义中,有一个 "this.students = [...]" 这意味着 demo 是引用 "this" 的对象,如果我们这样做,就会发生这种情况"demo = new DemoController()"
-
您的
DemoController as demo示例来自哪里?角 1.2。距离还很远(1.1.5 仍在不稳定的分支中)但我怀疑他们是否会更改控制器以使用new进行实例化,这将是一个非常大的变化。我会使用文档中的“Angular 从不创建控制器的实例”语句。 -
我刚刚从 angularjs 频道观看了 YouTube 上的“1.5 版中的新功能”。
标签: javascript angularjs angularjs-controller angularjs-injector angularjs-controlleras