为什么我使用ngRepeat得到一个空选项(第一个)?

时间:2015-10-26 16:37:54

标签: angularjs angularjs-ng-repeat html-select

第一个如下所示:

<option value="? number:0 ?"></option>

HTML:

<select name="questionId1" class="questionId1 form-control required" tabindex="3" ng-model="abCtrl.form.questionSel.q1.index" ng-change="abCtrl.changeFn()" >
    <option ng-repeat="question in abCtrl.form.questions" value="{{question.index}}"
            ng-selected="question.index == abCtrl.form.questionSel.q1.index">{{question.val}}
    </option>
</select>

JS:

this.form={
           questions:      [],
           questionSel:    {q1:{index:0,}, q2:{index:1}},
}

form.questions由ajax调用

填写

1 个答案:

答案 0 :(得分:0)

当绑定到ng-model变量的值与任何选项值不匹配时会发生这种情况:

ng-model="abCtrl.form.questionSel.q1.index"

重要提示:

question.index的比较是 严格 :类型也必须匹配。

当您使用重复选项而不是ng-options时,即当您编写value="{{question.index}}"时,该选项的值将变为字符串。因此,ng-model中变量的值(数字)不匹配,您将获得一个空选项。

使用ng-options可以避免此问题,因为您可以为选项绑定除字符串之外的其他类型:

<select name="..." ng-model="abCtrl.form.questionSel.q1.index" ng-options="question.index as question.val for question in abCtrl.form.questions">
</select>