2016-07-06 136 views
0

標記:角ngSelected不在版本工作> 1.3

<!DOCTYPE html> 
<html ng-app="test"> 

    <head> 
    <script data-require="[email protected]" data-semver="1.5.6" src="https://code.angularjs.org/1.5.6/angular.min.js"></script> 
    <link rel="stylesheet" href="style.css" /> 
    <script src="script.js"></script> 
    </head> 

    <body ng-controller="ctrl"> 
    <h1>Hello Plunker!</h1> 
    <select ng-model="user.item_id"> 
     <option ng-selected="i.id == user.item_id" ng-repeat="i in items" value={{i.id}}>{{i.name}}</option> 
    </select> 
    </body> 

</html> 

JS:

var module = angular.module("test", []); 

module.controller('ctrl', function($scope){ 

    $scope.items = [ 
    {id: 1, name: 'foo'}, 
    {id: 2, name: 'bar'}, 
    {id: 3, name: 'baz'}, 
    ]; 

    $scope.user = {}; 
    $scope.selectedItem = {id: 1}; 

    $scope.user.item_id = $scope.selectedItem.id; 


}); 

Plunker:https://plnkr.co/edit/7oi4KwzMhGi3kdltSklg?p=preview

問題:如果你檢查select的HTML代碼,你會請參閱HTML selected屬性已正確放置。

但是,它不顯示爲突出顯示的選項。爲什麼?

== ==編輯

這plunker代碼正在按預期的角度1.3.20,但它在1.4.x版或1.5.x的

破工作plunker:https://plnkr.co/edit/0ApQeZ6Kar2yQisELXfT?p=preview

== == EDIT2

我已經發布了關於angularjs排隊票:https://github.com/angular/angular.js/issues/14876#issuecomment-231010972

基本上,他們說我們應該堅持ngOptions,儘管他們不知道爲什麼ngSelected被打破了。

+0

我沒有看到plnkr與角* 1.3x *和角* 1.5x *之間的任何區別。 – developer033

+0

操作系統和瀏覽器? – brazorf

回答

5

嗯,你可以使用NG選項,而不是...

<select ng-model="user.item_id" ng-options="i.id as i.name for i in items"> 
</select> 

這裏https://plnkr.co/edit/G4Hu4ZpShaUPCE5zTsdV

+0

這是一個偉大的使用ng-options – Thinker

+0

是的,我可以,謝謝 - 但那不是我的觀點,我想明白爲什麼ng-selected似乎被打破。 – brazorf

+0

那麼問題是使用$ scope.selectedItem = {id:1}; 試試這個$ scope.selectedItem = {id:'1'};它工作正常...你正在比較ID字符串與ID號,所以它不匹配 – Kalyan

0

檢查我沒有看到你提到的任何版本的工作。無論如何,檢查這個plunker

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

你寫的選擇方式,我可以重現的任何輸入同樣的事情。原因是因爲它不是角度綁定的工作方式,除非您更改模型(即使用ng-init),否則您的選擇不知道他的模型的任何內容。

使用這種方式:

<option ng-selected="i.id == user.item_id" ng-repeat="i in items" value={{i.id}}>{{i.name}}</option> 

並不意味着你的模型將更新,它僅更新的DOM元素。

+0

對不起隊友,這是與角1.3.20 https://plnkr.co/edit/0ApQeZ6Kar2yQisELXfT?p=preview相同的版本,我看到它在鉻上工作。 – brazorf