我的代码低于一。如果条件在IE9& IE8。
<select id="ProductsList" data-bind="foreach: controlConfig, value: $root.Name">
<!--ko if:$data.Type=='List_Item-Instruction'-->
<option data-bind="text: $data.DescriptionText"></option>
<!--/ko-->
<!--ko if:$data.Type=='List_Item-Category' || $data.Type=='List_Item'-->
<option data-bind="text: $data.Name"></option>
<!--/ko-->
</select>
任何帮助?
答案 0 :(得分:2)
有很多更好的方法可以做到这一点。
<select id="ProductsList" data-bind="foreach: controlConfig, value: $root.Name">
<option data-bind="text: ($data.Type == "List_Item-Instruction") ? $data.DescriptiveText : $data.Name"></option>
</select>
或者,根据您的对象结构,检查DescriptiveText是否为null
<select id="ProductsList" data-bind="foreach: controlConfig, value: $root.Name">
<option data-bind="text: !!$data.DescriptiveText() || $data.Name()"></option>
</select>
如果属性是可观察的,您可能还需要打开属性。
<option data-bind="text: ($data.Type() == "List_Item-Instruction") ? $data.DescriptiveText() : $data.Name()"></option>
答案 1 :(得分:0)
<select id="ProductsList" data-bind="foreach: controlConfig, value: $root.Name">
<!--ko if:$data.Type=='List_Item-Instruction'-->
<option data-bind="text: $data.DescriptionText"></option>
<!--/ko-->
<!--ko if:$data.Type=='List_Item-Category' || $data.Type=='List_Item'-->
<option data-bind="text: $data.Name"></option>
<!--/ko-->
</select>
这在IE8中不起作用的原因是因为IE *从select元素中删除了注释。如果您在IE8中检查html,您会注意到淘汰评论已经消失:(。QBM5为此问题提供了一些解决方案。我建议使用select binding。您还需要如果您使用的是2.3之前的版本,那么您在选择绑定上遇到多个绑定问题。您可以在ryan niemeyer的blog找到更多相关信息。