为什么将“this”分配给控制器内的变量?

时间:2015-10-03 18:28:14

标签: javascript angularjs ngroute angular-controller

我是Angular的新手,我无法理解为什么我们将它分配给控制器内的变量。

angular.module('NoteWrangler')
.controller('NoteCreateController', function($http){
    var controller = this;
    this.saveNote = function(note){
        controller.errors = null;
        $http({method: 'POST', url: '/notes', data: note})
        .catch(function(note){
            controller.errors = note.data.error;
        })
    };
});

1 个答案:

答案 0 :(得分:0)

一般来说,在Javascript(或其他语言)中,其中一个原因是"这个"像那样保存,是因为"这个"当调用同一个类/对象中的其他函数时,它不是您所期望的。大多数情况下,从UI调用函数时,"这个"将是点击发生的DOMElement或第三方对象。但是你通常会期望"这个"是对象引用,因为该函数属于该对象。

"这个"的价值在Javascript中无法通过词法(通过查看代码结构)确定范围。 "这个"的价值在运行时设置,具体取决于调用相关函数的方式。

所以基本上你保存了对实际"这个"这样你也可以从其他功能中引用正确的对象。

我强烈推荐这本书来理解这个"这个": https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&%20object%20prototypes/README.md#you-dont-know-js-this--object-prototypes