在angularJS中使用controllerAS的主要好处是什么

在angularJS中使用controllerAS的主要好处是什么,angularjs,angularjs-controller,angularjs-controlleras,Angularjs,Angularjs Controller,Angularjs Controlleras,ng controller=“invoiceController as invoice”创建新的invoiceController构造函数,并将其分配给场景后面的作用域,这与$scope injection在控制器函数参数中所做的类似 我说的对吗 如果是,则范围如何与此相关。 请帮忙 “as”告诉我们“this”应该指向什么。这样,您可以在不同的作用域中创建多个控制器实例,而不会因为名称不同而混淆它们。它允许您将控制器用作类或原型,将类/原型方法和属性公开到模板中,而不是将方法和属性添加到范围

ng controller=“invoiceController as invoice”创建新的invoiceController构造函数,并将其分配给场景后面的作用域,这与$scope injection在控制器函数参数中所做的类似

我说的对吗

如果是,则范围如何与此相关。 请帮忙


“as”告诉我们“this”应该指向什么。这样,您可以在不同的作用域中创建多个控制器实例,而不会因为名称不同而混淆它们。

它允许您将控制器用作类或原型,将类/原型方法和属性公开到模板中,而不是将方法和属性添加到
范围
对象中的控制器

因此,使用ES2015或ES5,您可以:

export class SomeController {

 someProperty = true;

 someMethod() {
   return 'foo';    
 }
}

现在,如果您将其中一个作为
SomeController as ctrl
提供给模板,那么您将能够作为
ctrl.someProperty
ctrl.someMethod()
访问它们。控制器的
ctrl
实例将为您添加到
$scope

另一个好处是内存占用。将函数修补到$scope上是浪费的。类和原型允许共享相同的方法实现,同时保持每个实例的独立性。这对于具有许多实例(例如列表项)的组件来说是很有用的。

您可能会发现这些实例非常有用:,可能与
function SomeController() {}
SomeController.prototype.someProperty = true;
SomeController.prototype.someMethod = function() { return 'foo'; }