为什么ng-selected不能与ng-repeater一起使用?

3

这个重复器为什么坏了

<select name="quarter" ng-model="Quarter" ng-selected="Quarter" >
    <option ng-repeat="v in [1,2,3,4]" value="{{v}}">Q{{v}}</option>
</select>

但不是手写的方式吗?

<select name="quarter" ng-model="Quarter" ng-change="onQuarterChange()" ng-selected="Quarter">
    <option value="1">Q1</option>
    <option value="2">Q2</option>
    <option value="3">Q3</option>
    <option value="4">Q4</option>
</select>
2个回答

7

建议继续使用ng-options

<div ng-app>
  <h2>Todo</h2>
  <div ng-controller="QuarterController">
    <select name="quarter" ng-model="Quarter" ng-options="obj.value as obj.text for obj in [{'value': 1,'text' : 'Q1'},{'value':2,'text':'Q2'},{'value':3,'text':'Q3'},{'value':4,'text':'Q4'}]">
    </select>
  </div>
</div>

function QuarterController($scope) {
    $scope.Quarter = 2;
}   

你最好在你的控制器中定义数组。

http://jsfiddle.net/hDNsm/3/


所以我需要一个值、文本对象数组。嗯,好的,这似乎可以工作。 - BruteCode
你不需要这样做,但如果你想让文本显示为Q1、Q2等而不是1、2等,你就必须这样做。 - Ronnie
嗯,我似乎正确使用了 ng-selected,但转而使用 ng-options 解决了选择问题。不知道是否存在 bug? - markshiz

4

请注意以下两点:

  1. 'ng-selected'指令应写在'option'元素上而不是'select'元素上。

  2. 'ng-selected'属性的内容应该是一个选项被选中的条件。一个简单的例子是如果选项的值等于选择模型的值。

您的代码应该像这样:

<select name="quarter" ng-model="Quarter">
    <option ng-repeat="v in [1,2,3,4]" value="{{v}}" ng-selected="v==Quarter">Q{{v}}</option>
</select>

6
我有同样的问题,但是你提供的解决方案对我没有用。已经选择了正确的选项,但还是不起作用。 - Norlihazmey Ghazali
谢谢,注意事项 #1,我没有注意到我犯了一个错误。+1 - Zameer Fouzan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接