2016-07-06 76 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