javascript - Controller 内的 Angular $http 函数作用域

标签 javascript angularjs model-view-controller controller scope

我在尝试将“this”与 Controller 内的 Angular 函数(特别是 $http.get)一起使用时遇到问题。

例子:

Javascript-(伪代码)

...
.controller('testController')
{
   $http.get(data)
  {
     this.Stuff = data;
  }
}
...

HTML-

<div ng-controller='testController as test'>
{{test.Stuff}}
</div>

当试图访问 html 中的 test.Stuff 时,它是空的。

我知道存在范围问题,但我不应该能够在 $http 函数中访问 Controller 的“this”吗?

最佳答案

您会注意到成功回调中的 this 指的是 window(全局对象)。您的成功回调是使用 window 作为上下文调用的,因为不是其他函数成员的函数是使用 window 对象作为函数的上下文调用的。如果您希望 this 引用您的 Controller 实例,您必须将该上下文绑定(bind)到该函数。您可以使用 angular.bind来完成这个。

.controller('testController')
{
   $http.get(data).success(angular.bind(this, function(data) {
     this.Stuff = data;
  }));
}

关于javascript - Controller 内的 Angular $http 函数作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24809189/

相关文章:

java - 如何使用 Java Swing 和 MVC 进行真正的 GUI 开发

ruby-on-rails - 对 Rails 一无所知......请揭开如何跨 Controller View 和模型使用变量的神秘面纱

javascript - 如何将 div 定位在屏幕中间,但要随页面移动?

javascript - Jasmine 2.0 async done() 和 angular-mocks inject() 在同一个测试中 it()

javascript - 如何使用 jquery 按月和年对日期进行分组?

javascript - 我如何使用 Angular 从 vanilla(非 Angular)HTML 创建交互式小部件?

html - CSS3 与 Angular Material CSS

ruby-on-rails - 如果用户检查错过了 3 天,如何重新启动关卡?

javascript - 过滤后 SlickGrid 行 ID 发生变化

javascript - 加载页面时无法显示加载图标 - bootstrap