我希望选择遵循特定规则的选项,例如下面的
<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
如何根据规则选择特定选项?
答案 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);
});