2016-03-02 111 views
1

我想要綁定到ng模型狀態縮寫值的選擇列表..例如阿拉斯加的「AK」。初始選擇顯然不起作用,因爲ng-model被設置爲字符串而不是對象。我已經看遍了所有其他人都有這個問題,但我還沒有找到一個解決方案的作品。AngularJS選擇與ng選項綁定到對象不屬性

我的控制器具有下面的代碼

$scope.states = 
      [ 
      { 
       "name": "Alabama", 
       "abbreviation": "AL" 
      }, 
      { 
       "name": "Alaska", 
       "abbreviation": "AK" 
      }, 
      { 
       "name": "Arizona", 
       "abbreviation": "AZ" 
      }]; 

    //I want the model to be the abbreviation string 
    $scope.state = "AK"; 

這裏是標記

<select class="form-control m-b" data-placeholder="Select Location" 
required="" ng-model="state" 
ng-options="state as state.name for state in states track by state.abbreviation"> 
          </select> 

    <p>Selected State {{state}}!</p> 

這裏是顯示蝨一個plnkr我談論

https://plnkr.co/edit/IzDY4GrOxJSaMV2MMP30

回答

1

你可以使用

$scope.state.abbreviation

來獲取選中後狀態對象的abrevation。

plkr solution

OR

你可以改變NG-選項

ng-options="state.abbreviation as state.name for state in states track by state.abbreviation"

+1

謝謝,第二個選項是我一直在尋找,現在模型縮寫。謝謝!在初始選擇未設置爲「阿拉斯加」的情況下,我仍然遇到問題。我創建了這個plnkr ... https://plnkr.co/edit/OC2DVIlOmpHw75I9ERI8 – Dennis

+0

做這樣的事情的問題是,ng模型需要設置爲ng選項列表中的一個對象來設置它控制器。有沒有理由不能像[這個plkr](https://plnkr.co/edit/pTndZbXoDSfILiU80IQk)這樣的東西? – blthiewes

+1

不,沒有理由讓我做不到。我只是希望只使用縮寫,而不必從縮寫中查找對象。我希望在ng-model被正確設置的時候,它最初可以綁定到縮寫。 – Dennis