为什么“this"被赋给控制器内的一个变量
Why "this" is assigned to a variable inside the 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;
})
};
});
一般来说,在Javascript(或其他语言)中,"this"被这样保存的原因之一是因为"this"的值不是您在调用同一类/对象中的其他函数时所期望的值。大多数情况下,当从UI调用函数时,"this"的值将是发生单击的DOMElement或第三方对象。然而,您通常会认为"this"是对象引用,因为函数属于对象。
Javascript中"this"的值不能通过词法(通过查看代码结构)作用域来确定。"this"的值是在运行时设置的,取决于所讨论的函数是如何被调用的。
所以本质上你保存了对实际"this"的引用,这样你也可以从其他函数中引用正确的对象。
我强烈推荐这本书来理解"这个":% 20 https://github.com/getify/You-Dont-Know-JS/blob/master/this%20& % 20对象原型/README.md # you-dont-know-js-this——对象原型
相关文章:
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 导航到特定事件的另一个变量页面
- 在另一个函数中使用变量this
- 我可以在Javascript/jQuery中使用一个变量作为键吗
- 使用mongodb更新中的一个变量
- 为什么window.open不打开一个以变量形式给出的链接
- 将节点数据分配给另一个变量jstree
- 如何将变量传递到另一个js文件
- 我怎么能让流星简单模式中的一个字段等于一个js变量,并且仍然让用户填写简单模式的其余部分
- 如何从onclick函数设置全局变量并将其传递给另一个JS文件
- 将会话变量从一个页面传递到另一个页面
- Javascript:在激发函数后返回一个变量以供使用
- 替换另一个变量对象中的变量值
- 什么'它的意思是当一个变量位于括号外时
- 这在JavaScript中是一个好的变量名吗
- 可以't将sessionStorage设置为Javascript中的一个变量
- 如何在javascript中给变量一个随机值
- 在不同的.js文件之间传递变量;一个是在iframe内
- Console.log(变量);VS console.log([变量]);/一个提供信息,另一个没有
- 是否可以给变量一个默认值