以下是我必须使用的一个小小的例子:http://jsfiddle.net/SHjXg/3/
由于knockout不允许我绑定'with'和'if'绑定到单个元素,我目前使用2个嵌套div而不是一个来完成此任务。
<div class="item" data-bind="with:items.item1">
<div data-bind="if:ready()">
<!-- content here is different for each item and depends on item
properties which are not available before ready() is set to true. -->
</div>
</div>
我可以以某种方式将绑定上下文与现有的'if'绑定一起传递,以便每个项目只使用一个div,还是应该创建一个自定义绑定来执行此操作?
答案 0 :(得分:3)
您可以使用如下语法:
<div class="item" data-bind="template: { data: items.item1, 'if': items.item1.ready }">
此语法与with
的当前版本之间只有微小的差别,因为这不会保留原始元素。
否则,您可以选择使用无容器绑定,如:
<!-- ko if: ready -->content<!-- /ko -->
答案 1 :(得分:1)
如果我理解你,你可以使用virtual element:
<div class="item" data-bind="with:items.item1">
<!-- if : ready() -->
<!-- content here is different for each item and depends on item
properties which are not available before ready() is set to true. -->
<!-- /ko -->
</div>
答案 2 :(得分:1)
你可以使用非常有用的淘汰评论。
http://knockoutjs.com/documentation/if-binding.html
<ul>
<li>This item always appears</li>
<!-- ko if: someExpressionGoesHere -->
<li>I want to make this item present/absent dynamically</li>
<!-- /ko -->
</ul>