簡體   English   中英

選擇選項中的ng-init覆蓋ng-model(添加了插件)

[英]ng-init overriding ng-model in the select options (plunker added)

https://plnkr.co/edit/RgGzgGkBPaxvKHNE688K?p=preview

在上面的示例中,我正在硬編碼選擇選項並通過ng-init屬性初始化為顏色“紅色”。 我想在頁面加載時顯示默認的顏色“紅色”。

 <select ng-model="mycolor" ng-init="mycolor = 'red'">
      <option>red</option>
      <option>green</option>
    </select>

在控制器中,我將“ mycolor”更新為“綠色”,但由於ng-init屬性,選擇框仍顯示“紅色”。 (我這樣做是因為將從后端檢索mycolor)

app.controller('MainCtrl', function($scope) {
  $scope.mycolor = 'green';
});

如何解決呢? 簡而言之,我想實現的是,我想在頁面加載時的選擇框中顯示紅色默認值,如果后端的mycolor發生任何更改,則應將其覆蓋為新顏色。 就我而言,它是綠色的。

你可以做

<select ng-model="mycolor" ng-init="mycolor = mycolor || 'red'">

因此,如果有值,則將mycolor模型設置為自身,否則默認為'red'

朋克 我有5秒鍾的超時時間,將顏色更改為藍色,以模擬后端更改為例。

問題是ngInit是一個指令,角壽命基本上是

  1. 調節器
  2. 前鏈路
  3. 后鏈接

因此,您不能根據指令“覆蓋”控制器中的某些內容(除非其專門用於編譯)。

將觀察者置於需要更改的地方,而觀察者回調更改為'mycolor'似乎更合乎邏輯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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