【问题标题】:AngularJS controller return valueAngularJS 控制器返回值
【发布时间】:2014-05-26 21:05:26
【问题描述】:

John Papa 将 AngularJS 的“控制器作为”技术描述为:

myApp.controller("MainCtrl", [
    function () {
        var vm = this;  // convention - ViewModel
        vm.person = { name: "Bob" };
        return vm;
    }]);

return vm; 行的用途是什么?没有它,代码也可以工作。

【问题讨论】:

  • 从我的 POV 虚拟机返回以生成 chained method
  • 我不认为它与链式方法有任何关系(但我之前错了),我看不出它如何改变默认行为(即返回this )。
  • 引用文章作者的话:“这只是我的约定”

标签: javascript angularjs controller


【解决方案1】:

当 Angular 创建你的控制器时,它将在你传入的函数上使用 new 关键字。因此,它将使用你传入的构造函数构造一个新对象。从构造函数返回对象将导致 Angular将新创建的对象的该实例与 JavaScript 构造函数的任何其他用法一样使用。

有一些关于构建过程的细节(参见this SO 答案)需要牢记:

  1. 当返回的对象与this相同时,可以省略,默认使用this
  2. 如果返回一些原始类型or null(基本上是null 或不是Object,如the SO answer linked to earlier 中所述),this 也将被使用。
  3. 如果返回一个实例,将返回对该实例的引用。

this 将用于 1 和 2 是过于简单化了。同样,请参阅this answer regarding construction 了解具体详情。

【讨论】:

  • 我同意,但我没有看到对实际问题的明确答案。
  • 答案就是我在第1点写的内容。由于vm和这个一样,所以可以省略,反正会返回...
猜你喜欢
  • 1970-01-01
  • 2016-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-08
  • 2020-08-28
  • 1970-01-01
  • 2015-05-30
相关资源
最近更新 更多