AngularJS控制器返回值

Tru*_*ill 7 javascript controller angularjs

John Papa将AngularJS的"控制器为"技术描述为:

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

这条return vm;线的目的是什么?代码在没有它的情况下工作

Luk*_*uke 6

当angular创建你的控制器时,它会new在你传入的函数上使用关键字.因此,它将使用你传入的构造函数构造一个新对象.使用构造函数构造对象将始终返回新创建的对象的实例.

有关构建过程的一些细节(请参阅 SO答案)

  1. 返回的对象与this可以省略的对象相同时,默认情况下将返回
  2. 如果返回一些原始类型,null或其他不同的东西(在另一个SO答案中描述)也this将被返回.
  3. 如果返回实例,则将返回对此实例的引用.

  • 我同意,但我没有看到实际问题的明确答案. (5认同)