无法将更新的控制器绑定为变量以在AngularJS中查看

时间:2016-07-10 04:39:34

标签: javascript angularjs angularjs-scope angular-controller

查看:

<div ng-controller="MainPageController as mpc">
    <h1>{{mpc.city}}</h1>
</div>

控制器:

app.controller('MainPageController',['GetCityService', function(GetCityService){
  this.city = null;
  this.getCityService = GetCityService;
  this.getCityService.getCity().success(function(data){
      this.city = data.city
      console.log(this.city); // Prints the city correctly.
  });
}]);

我正在尝试使用&#34;控制器作为&#34;从控制器访问值的方法。我的服务正确返回城市名称,该名称分配给控制器变量&#34; this.city&#34;。但我无法绑定视图中的值&#34; (我在视图中看不到任何内容)

如果我做错了,请告诉我。 PS:我试图使用$ scope,它完美无缺。我无法理解为什么我无法绑定控制器变量&#34;如果可能的话建议何时使用$ scope和这个变量。

提前致谢:)

1 个答案:

答案 0 :(得分:0)

由于最初的问题已得到解答,我将尝试解释答案。这只是在javascript中理解'this'的问题。

在你的控制器功能中,“this”指的是控制器本身。在你的成功回调'this'不再指向控制器(如果你没有处于严格模式,我猜测窗口?)。

通过将'this'保存到变量(例如'vm'),每当你引用vm时,你就知道你正在引用控制器,而不是那个'this'在那个上下文中指的是什么(可以改变)。 / p>

另一方面,现在我们已经拥有1.5中的所有这些功能,最好不再使用$ scope并始终使用'controllerAs'。我还建议转移到组件而不是使用独立控制器。