![](/img/trans.png)
[英]AngularJS variable is not reflecting instantly on View but Updated on Controller
[英]Unable to bind updated controller as variable to view in AngularJS
視圖:
<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.
});
}]);
我正在嘗試使用“控制器為”方法從控制器訪問值。 我的服務正確返回了分配給控制器變量“ this.city”的城市名稱。 但我無法在“視圖”中綁定值”(我看不到視圖中顯示的任何內容)
如果我做錯了,請告訴我。 PS:我嘗試使用$ scope,它非常有效。 我無法理解為什么我無法綁定控制器變量”,並且如果可能,建議何時使用$ scope和此變量。
提前致謝 :)
由於原始問題已得到解答,因此我將盡力解釋答案。 這只是在javascript中理解“ this”的問題。
在控制器功能中,“ this”是指控制器本身。 在成功回調中,“ this”不再指控制器(如果您未處於嚴格模式,我猜是在窗口嗎?)。
通過將“ this”保存到變量(例如“ vm”),每當您引用vm時,您就知道您正在引用控制器,而不是在該上下文中引用的“ this”(可以更改)。
另外,現在我們在1.5中擁有所有這些功能,最好不要再使用$ scope並始終使用'controllerAs'。 我還建議轉移到組件而不是使用獨立控制器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.