ng-controller="invoiceController as invoice" 创建新的 invoiceController 构造函数并将其分配给幕后的作用域,这与 $scope 注入在控制器函数参数中所做的类似
我对上述观点是否正确。
如果是,那么范围如何与此相关。请帮忙。
ng-controller="invoiceController as invoice" 创建新的 invoiceController 构造函数并将其分配给幕后的作用域,这与 $scope 注入在控制器函数参数中所做的类似
我对上述观点是否正确。
如果是,那么范围如何与此相关。请帮忙。
“as”告诉“this”应该指向什么。这样,您可以在不同的范围内创建多个控制器实例,而不会因名称不同而混淆它们。
它允许您将控制器用作类或原型,在其中向模板公开类/原型方法和属性,而不是控制器向scope
对象添加方法和属性。
因此,使用 ES2015 或 ES5,您可以执行以下任一操作:
export class SomeController {
someProperty = true;
someMethod() {
return 'foo';
}
}
或者
function SomeController() {}
SomeController.prototype.someProperty = true;
SomeController.prototype.someMethod = function() { return 'foo'; }
现在,如果您将其中之一提供给您的模板,SomeController as ctrl
您将能够以ctrl.someProperty
和ctrl.someMethod()
. 您的ctrl
控制器实例已添加到您的控制器中$scope
。
另一个好处是内存占用。猴子修补函数到 $scope 是浪费的。类和原型允许共享相同的方法实现,同时保持每个实例分开。例如,这对于具有许多实例的组件(例如列表项)来说是加起来的。