ng-show后无法更改Angular Select

时间:2013-08-20 21:07:34

标签: angularjs angularjs-scope

我之前使用ng-src遇到了这个问题,但我不知道如何使用<select>处理它。非常简单的交易,但在选择下拉列表后显示的值无法更改。我试过$apply()$compile()没有运气。

我认为问题在于Angular不知道编译该元素。有任何想法吗?这是代码......

<blockquote class="header10">
  <label class="radio">
    <input type="radio" ng-model="panel.style" value="Rods and Rings">Rod and Rings
  </label>
  <select ng-hide="!(panel.style == 'Rods and Rings')" ng-model="panel.style.rodsAndRings">
    <option value="">--Choose Header--</option>
    <option>Butterfly Pleats (2 inch)</option>
    <option>Cuff Tops</option>
    <option>Fan Pleats</option>
    <option>Flat</option>
    <option>Goblet Pleats</option>
    <option>Inverted Box Pleats</option>
    <option>Pencil Pleats</option>
    <option>Pinch Pleats (4 inch)</option>
    <option>Tab Tops</option>
    <option>Tie Tops</option>
    <option>Other</option>
  </select>
  <div ng-hide="!(panel.style.rodsAndRings == 'Other')">
    <p>Other <input type="text"></p>
  </div>
</blockquote>

行为是在显示select元素之后,我仍然可以看到这些值,并且选择其中的任何值始终会恢复为默认值--Choose Header--,因为它永远不会被采用。

关于Plunker的测试用例:http://plnkr.co/edit/dTYcCi6aT3H5Gm7TEvyc?p=preview

1 个答案:

答案 0 :(得分:3)

问题是panel.style.rodsAndRings不是有效的ng模型。 您将panel.style定义为字符串基元,因此将属性附加到它将不起作用。尝试将模型更改为不同的模式,例如panel.selected

另外,我建议您在选项中使用angulars ng-options而不是硬编码