簡體   English   中英

無法將更新的控制器綁定為變量以在AngularJS中查看

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM