在<select> </select>中选择特定选项

时间:2014-12-09 19:35:55

标签: angularjs

我希望选择遵循特定规则的选项,例如下面的

<select class="right123" >
     <option ng-selected="'{{contact.Situation}}' == 'P' ? 'true' : 'false'">P</option>
     <option ng-selected="'{{contact.Situation}}' == 'B' ? 'true' : 'false'">B</option>
     <option ng-selected="'{{contact.Situation}}' == 'A' ? 'true' : 'false'">A</option>
     <option ng-selected="'{{contact.Situation}}' == 'N' ? 'true' : 'false'">N</option>
</select>

呈现HTML

<select class="right123 ng-scope">
      <option ng-selected="'B' == 'P' ? 'true' : 'false'" value="P" selected="selected">P</option>
      <option ng-selected="'B' == 'B' ? 'true' : 'false'" value="B" selected="selected">B</option>
      <option ng-selected="'B' == 'A' ? 'true' : 'false'" value="A" selected="selected">A</option>
      <option ng-selected="'B' == 'N' ? true : false" value="N">N</option>
</select>

我目前的情况是B,但呈现的HTML中的所有选项都属于属性selected=selected

如何根据规则选择特定选项?

1 个答案:

答案 0 :(得分:2)

你应该使用没有任何插值的表达式:

 <option ng-selected=" contact.Situation === 'P' ">P</option>
 <option ng-selected=" contact.Situation === 'B' ">B</option>
 <option ng-selected=" contact.Situation === 'A' ">A</option>
 <option ng-selected=" contact.Situation === 'N' ">N</option>

另请注意ngSelected将所有值强制转换为布尔值,所以出乎意料:

// in javascript all strings are truthy except an empty string('')

'false' === true

来自ngSelected的源代码:

scope.$watch(attr[normalized], function ngBooleanAttrWatchAction(value) {
  attr.$set(attrName, !!value);
});