有没有办法将绑定上下文传递给淘汰赛中的'if'绑定?

时间:2013-07-29 14:13:15

标签: javascript data-binding knockout.js

以下是我必须使用的一个小小的例子: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,还是应该创建一个自定义绑定来执行此操作?

3 个答案:

答案 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>