使用knockout data-bind隐藏html表

时间:2013-03-05 17:00:46

标签: knockout.js

我知道如果没有这样的数据我们可以隐藏表格:可见:车辆()。长度> 0

<table data-bind="visible: Vehicles().length>0">
    <thead><tr><th>Brand</th><th>Model</th><th>Registration</th><th></th></tr></thead>
    <tbody data-bind="foreach: Vehicles">
        <tr data-bind="click: $root.goToVehicle">
            <td data-bind="text: Brand"></td>
            <td data-bind="text: Model"></td>
        </tr>     
    </tbody>
</table>

车辆是一个可观察的物体。

现在我有另一个场景:

<table data-bind="with: chosenCategoryData">
    <thead><tr><th>Brand</th><th>Model</th><th>Registration</th><th></th></tr></thead>
    <tbody data-bind="foreach: Vehicles">
        <tr data-bind="click: $root.goToVehicle">
            <td data-bind="text: Brand"></td>
            <td data-bind="text: Model"></td>
        </tr>     
    </tbody>
</table>

正如您所看到的,我的包含我填充html表的数据的Vehicles对象包含在名为selectedCategoryData的另一个对象(可观察的)中。

我尝试用visible: Vehicles().length>0隐藏表格,但我收到错误,可能是因为车辆无法观察到。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

IIRC,您无法在同一with中使用visibledata-bind。您可以将其包装在另一个<div>

<div data-bind="with: chosenCategoryData">
    <table data-bind="visible: Vehicles.length">...</table>
</div>

或使用虚拟语法:

<!-- ko with: chosenCategoryData -->
<table data-bind="visible: Vehicles.length">
<!-- /ko -->

看一下jsfiddle。如果是Vehicles(),请使用observableArray