KnockoutJS可见不适合我

时间:2013-02-17 03:43:17

标签: knockout.js

下面是一些表格代码。如果数据项的Id为0,我不希望显示该行。我试着这样写:

  

data-bind =“visible:$ data.Id> 0”

但那不起作用。也没有把0放在引号中。我也尝试过:

data-bind =“visible:$ index> 0”

但这会使所有行消失!我确定这是一个简单的语法问题,但我没有看到它......

    <table>
        <thead>
            <tr>
                <th>Name</th>
                <th>URL</th>
                <th>Disabled</th>
                <th>Parent</th>
                <th></th>
            </tr>
        </thead>
        <tbody data-bind="foreach: menuItemModels">

            <tr  data-bind="visible: $data.Id > 0">

                <td>
                    <input type="text" class="input-block-level" data-bind="value: $data.Name" /></td>
                <td>
                    <input type="text" class="input-block-level" data-bind="value: $data.Url" /></td>
                <td style="text-align: center;">
                    <input type="checkbox" data-bind="value: $data.Disabled" /></td>
                <td>                      
                    <select data-bind="options: $root.menuItemModels, optionsValue: 'Id', optionsText: 'Name', value: ParentId"></select>
                </td>
                <td>
                    <button class="btn btn-primary" type="submit"data-bind="click: $root.update">Update</button>
                    <button class="btn btn-primary" type="submit" data-bind="click: $root.remove">Delete</button>
                </td>
            </tr>
        </tbody>
    </table>

1 个答案:

答案 0 :(得分:9)

当您在表达式中访问observable的值时,您需要将其作为函数调用。

如果Id是可观察的,那么您需要像$data.Id() > 0一样调用它。

尽管visible绑定的值是真值还是虚假,但是你真的可以将它减少到visible: Id。当你将一个简单的observable传递给一个绑定(而不是在一个表达式中)时,Knockout会为你解包它(称之为函数)。

$index也是一个可观察的,所以它也是一样的想法:visible: $index