Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.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 为什么我们要将控制器变量设置为角度中的“this”?_Javascript_Angularjs_This - Fatal编程技术网

Javascript 为什么我们要将控制器变量设置为角度中的“this”?

Javascript 为什么我们要将控制器变量设置为角度中的“this”?,javascript,angularjs,this,Javascript,Angularjs,This,因此,我正在看第1.5节中代码学校的一个例子,即保持锐利的角度。 代码如下: angular.module('NoteWrangler') .controller('NotesIndexController', function($http) { var controller = this; $http({method: 'GET', url: '/notes'}).success(function(data){ controller.notes = data;

因此,我正在看第1.5节中代码学校的一个例子,即保持锐利的角度。 代码如下:

angular.module('NoteWrangler')
.controller('NotesIndexController', function($http) {
    var controller = this;
    $http({method: 'GET', url: '/notes'}).success(function(data){
        controller.notes = data;
    })
 });
我阅读了Mozilla的开发者网络指南[1],但我的理解仍然不是很好

在上面示例的下一行中

var controller = this;
为什么要将controller=设置为该值?为什么不直接使用var控制器;?或者将其设置为等于此值,使其成为成功回调中的全局变量,否则只会更改其自身的局部控制器变量,而不是控制器中声明的变量

如果html提供了任何线索,他们随后会在html中执行以下操作:

<div class="note-wrapper">
    <a class ="card-notes" ng-repeat="notes in indexController.notes">
    </a>
</div>
将变量设置为该值允许您在使用controllerAs语法时添加新名称空间

HTML:

如果没有Controllera,您将不得不使用$parent,这实际上是一种糟糕的做法。必须使用$parent.$parent.$parent.$parent.$parent.someValue进行成像

进一步阅读:

将变量设置为该值允许您在使用controllerAs语法时添加新名称空间

HTML:

如果没有Controllera,您将不得不使用$parent,这实际上是一种糟糕的做法。必须使用$parent.$parent.$parent.$parent.$parent.someValue进行成像

进一步阅读:

是否将其设置为等于此值,使其成为一个全局变量,否则在成功回调中只会更改其自身的局部控制器变量,而不是在控制器中声明的变量

其值取决于函数的调用方式

当你有一个新的函数,你有一个新的价值,这里面

将其存储在另一个变量中意味着内部函数可以读取该变量的值,因为它没有访问该变量的权限

但它不是一个全局变量,只是一个范围更广的变量

是否将其设置为等于此值,使其成为一个全局变量,否则在成功回调中只会更改其自身的局部控制器变量,而不是在控制器中声明的变量

其值取决于函数的调用方式

当你有一个新的函数,你有一个新的价值,这里面

将其存储在另一个变量中意味着内部函数可以读取该变量的值,因为它没有访问该变量的权限

但它不是一个全局变量,只是一个范围更广的变量

为什么不直接使用var控制器

因为这意味着控制器将是未定义的

无功控制器; querySelector'pre'.innerHTML=controller; 为什么不直接使用var控制器

因为这意味着控制器将是未定义的

无功控制器; querySelector'pre'.innerHTML=controller;
function OneCtrl() {
    this.notes = "foo";
}

function TwoCtrl() {
    this.notes = "bar";
}
<div ng-controller="OneCtrl as ctrl1">
    {{ctrl1.notes}}
    <div ng-controller="TwoCtrl as ctrl2">
        {{ctrl2.notes}}
    </div>
</div>