Javascript 为什么我们要将控制器变量设置为角度中的“this”?
因此,我正在看第1.5节中代码学校的一个例子,即保持锐利的角度。 代码如下: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;
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>