4

下面是一些表格代码。我不希望该行显示数据项的 Id 是否为 0。我尝试这样编写它:

数据绑定=“可见:$data.Id > 0”

但这行不通。也没有将 0 放在引号中。我也试过:

数据绑定 =“可见:$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>
4

1 回答 1

9

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

如果Id是可观察的,那么您需要将其称为$data.Id() > 0.

visible绑定确实对值是否为真/假起作用,所以你真的可以把它减少到visible: Id. 当您将一个简单的 observable 传递给绑定(不在表达式中)时,Knockout 会为您解开它(将其作为函数调用)。

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

于 2013-02-17T04:23:54.393 回答