控制器内的Angular $ http函数范围

Axs*_*ech 1 javascript model-view-controller scope controller angularjs

我试图在控制器内部使用带有角度函数(特别是$ http.get)的"this"时遇到问题.

例:

Javascript-(伪代码)

...
.controller('testController')
{
   $http.get(data)
  {
     this.Stuff = data;
  }
}
...
Run Code Online (Sandbox Code Playgroud)

HTML的

<div ng-controller='testController as test'>
{{test.Stuff}}
</div>
Run Code Online (Sandbox Code Playgroud)

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

我知道有一个范围问题,但是我不能在$ http函数中访问控制器的'this'吗?

Ste*_*ler 6

您会注意到this成功回调内部是指window(全局对象).使用window上下文作为上下文调用成功回调,因为作为函数上下文的window对象调用不是其他函数成员的函数.如果要this引用控制器实例,则必须将该上下文绑定到该函数.您可以使用angular.bind来完成此任务.

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