gpt4 book ai didi

javascript - 为什么我们在 Angular 上将 Controller 变量设置为 "this"?

转载 作者:行者123 更新时间:2023-11-30 08:31:40 24 4
gpt4 key购买 nike

因此,我在 1.5 节中查看了代码学校中保持尖锐和 Angular 示例。继承人的代码:

angular.module('NoteWrangler')
.controller('NotesIndexController', function($http) {
var controller = this;
$http({method: 'GET', url: '/notes'}).success(function(data){
controller.notes = data;
})
});

我阅读了 Mozilla 的 [this][1] 开发者网络指南,但我的理解仍然不是很好。

在上面示例的以下行中。

var controller = this;

为什么我们要将 controller = 设置为此?为什么不只使用 var controller;? 或者通过将其设置为等于此值使其成为全局变量,否则在成功回调中只会更改其自己的本地 Controller 变量,而不是在 Controller 中声明的变量?

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

<div class="note-wrapper">
<a class ="card-notes" ng-repeat="notes in indexController.notes">
</a>
</div>

最佳答案

Why not just have var controller;?

因为这意味着 controller 将是 undefined

var controller;
document.querySelector('pre').innerHTML = controller;
<pre></pre>

is by setting it equal to this making it a global variable

您不是在创建一个全局 变量,而是在创建一个closed over。多变的。这意味着您可以在回调中使用该值。为了在回调中使用该值,您需要创建闭包变量或绑定(bind)函数。

var controller = {
hello: 'world'
};

// Just so we have to use a callback
setTimeout(function() {
console.log(this);
}, 0);

// Using a closure variable
setTimeout(function() {
console.log(controller);
}, 0);

// Binding a function
setTimeout(function() {
console.log(this);
}.bind(controller), 0);

关于javascript - 为什么我们在 Angular 上将 Controller 变量设置为 "this"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37032618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com