【问题标题】:What is key benefits of using controllerAS in angularJS在 angularJS 中使用 controllerAS 的主要好处是什么
【发布时间】:2017-07-18 03:34:12
【问题描述】:

ng-controller="invoiceController as invoice" 创建新的 invoiceController 构造函数并将其分配给幕后的作用域,这与 $scope 注入在控制器函数参数中所做的类似

我对上述观点是否正确。

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

-- AngularJS Developer Guide - Conceptual Overview

【问题讨论】:

标签: angularjs angularjs-controller angularjs-controlleras


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    它允许您将控制器用作类或原型,您可以将类/原型方法和属性公开给模板,而不是控制器将方法和属性添加到 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.somePropertyctrl.someMethod() 访问它们。您的控制器的 ctrl 实例已添加到您的 $scope 中。

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

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 2012-06-13
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 2013-11-05
      相关资源
      最近更新 更多