Javascript 为什么;这";是否分配给控制器内的变量?
我是Angular的新手,我不明白为什么我们要把它分配给控制器中的一个变量Javascript 为什么;这";是否分配给控制器内的变量?,javascript,angularjs,ngroute,angular-controller,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',
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;
})
};
});
通常,在Javascript(或其他语言)中,“this”这样保存的原因之一是,当调用同一类/对象中的其他函数时,“this”的值不是您所期望的值。大多数情况下,当从UI调用函数时,“this”的值将是发生单击的DomeElement或第三方对象。但是,您通常认为“this”是对象引用,因为函数属于对象
Javascript中“this”的值不能由词法(通过查看代码结构)范围确定。“this”的值是在运行时设置的,具体取决于相关函数的调用方式
所以本质上,您保存了对实际“this”的引用,以便您也可以从其他函数中引用正确的对象
我强烈推荐这本书来理解“这个”:
一般来说,在Javascript(或其他语言)中,“this”这样保存的原因之一是,当调用同一类/对象中的其他函数时,“this”的值不是您期望的值。大多数情况下,当从UI调用函数时,“this”的值将是发生单击的DomeElement或第三方对象。但是,您通常认为“this”是对象引用,因为函数属于对象
Javascript中“this”的值不能由词法(通过查看代码结构)范围确定。“this”的值是在运行时设置的,具体取决于相关函数的调用方式
所以本质上,您保存了对实际“this”的引用,以便您也可以从其他函数中引用正确的对象
我强烈推荐这本书来理解“这个”:
尝试使用
此选项。错误在回调中这与那里的情况完全不同。与angular无关,与javascript作用域和Closures有关,因为这是函数作用域。因此,如果要在更高范围内访问this
的值,请将其存储在变量中。请尝试在回调中使用this.errors
这与那里的情况完全不同。与angular无关,与javascript作用域和Closures有关,因为这是函数作用域。因此,如果您想在更高的范围内访问this
的值,可以将其存储在变量中。