Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么;这";是否分配给控制器内的变量?_Javascript_Angularjs_Ngroute_Angular Controller - Fatal编程技术网

Javascript 为什么;这";是否分配给控制器内的变量?

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的新手,我不明白为什么我们要把它分配给控制器中的一个变量

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
的值,可以将其存储在变量中。