更改ng-model时,选择不更新

时间:2016-12-03 11:47:50

标签: javascript angularjs

我有这样的代码:

  <select ng-model="mode" ng-init="mode=10">
    <optgroup label="Serif">
      <option value="0">Normal</option>
      <option value="1">Bold</option>
      <option value="2">Italic</option>
      <option value="3">Bold Italic</option>
    </optgroup>
    <optgroup label="Sans">
      <option value="4">Normal</option>
      <option value="5">Bold</option>
      <option value="6">Italic</option>
      <option value="7">Bold Italic</option>
    </optgroup>
    <optgroup label="Script">
      <option value="8">Normal</option>
      <option value="9">Bold</option>
    </optgroup>
    <optgroup label="Fraktur">
      <option value="10">Normal</option>
      <option value="11">Bold</option>
    </optgroup>
    <optgroup label="Monospace">
      <option value="12">Normal</option>
    </optgroup>
    <optgroup label="Double-struck">
      <option value="13">Bold</option>
    </optgroup>
  </select>
  <label for="text">Input Text</label>
  <input id="text" ng-model="input"/>
  <div>
    Output: {{input|convert:mode}}
  </div>

模式范围值被更改,转换过滤器以mode == 10执行但select不更新它仍然未被选中。当范围变量发生变化时,如何修复select更新?

以下是显示问题的code pen

2 个答案:

答案 0 :(得分:1)

由于选项值被视为string,您需要将ng-init值设置为string,如下所示

<select ng-model="mode" ng-init="mode='10'">

DEMO

答案 1 :(得分:1)

无论何时绑定ng-init中的字符串值,都应将其视为嵌入单引号的字符串mode='10'

 <select ng-model="mode" ng-init="mode='10'">

<强> DEMO