查看:
<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和这个变量。
提前致谢:)
答案 0 :(得分:0)
由于最初的问题已得到解答,我将尝试解释答案。这只是在javascript中理解'this'的问题。
在你的控制器功能中,“this”指的是控制器本身。在你的成功回调'this'不再指向控制器(如果你没有处于严格模式,我猜测窗口?)。
通过将'this'保存到变量(例如'vm'),每当你引用vm时,你就知道你正在引用控制器,而不是那个'this'在那个上下文中指的是什么(可以改变)。 / p>
另一方面,现在我们已经拥有1.5中的所有这些功能,最好不再使用$ scope并始终使用'controllerAs'。我还建议转移到组件而不是使用独立控制器。