无法弄清楚为什么这不起作用?....
<!-- ko if: $root.List().length > 1 || $root.AnyNotEqualToSelectedLanguage() -->
<div>
<select data-bind="options: $root.List, optionsText: 'displayText', value: selectedValue, optionsCaption: 'Choose...'"></select>
</div>
<!-- /ko -->
上面的代码生成“无法找到匹配的结束注释标记:ko if:$ root.List()。length&gt; 1 || $ root.AnyNotEqualToSelectedLanguage()”
而.......
<!-- ko if: $root.List().length > 1 || $root.AnyNotEqualToSelectedLanguage() -->
<span>
<select data-bind="options: $root.List, optionsText: 'displayText', value: selectedValue, optionsCaption: 'Choose...'"></select>
</span>
<!-- /ko -->
这有效....
对这个问题有快速了解的人?
答案 0 :(得分:4)
我可以针对第一个代码块无效的唯一有效解释是因为您的代码块可能在<p></p>
标记内
例如
<p>
<!-- ko if: $root.List().length > 1 || $root.AnyNotEqualToSelectedLanguage() -->
<div>
<select data-bind="options: $root.List, optionsText: 'displayText', value: selectedValue, optionsCaption: 'Choose...'"></select>
</div>
<!-- /ko -->
</p>
由于p
不能包含block
级元素,因此浏览器会在看到p
时关闭div
代码。这个浏览器最终将其视为:
<p>
<!-- ko if: $root.List().length > 1 || $root.AnyNotEqualToSelectedLanguage() -->
</p>
<div>
<select data-bind="options: $root.List, optionsText: 'displayText', value: selectedValue, optionsCaption: 'Choose...'"></select>
</div>
<!-- /ko -->
<p></p>
此时,淘汰赛无法解析它。
您可以检查为小提琴生成的来源:http://jsfiddle.net/jcHzK/1/
由@Artem创建的同一小提琴不起作用,因为代码现在位于p
标记内。
您的第二个代码有效,因为您已将块元素div
替换为内联元素span