如果 knockout.js 中的语句没有按预期工作

If statement in knockout.js not working as expected

我试图在数据数组为空时在 table 行中显示字符串 "No data was found.",但似乎无论如何都会打印消息。

Reproduction online(忽略条件orders.length ==0

我做错了什么?

<table>
    <thead>
        <tr>
            <th>Truck</th>
            <th>Pickup</th>
        </tr>
    </thead>
    <!-- ko if: orders.length==2 -->
    <tbody>
        <tr colspan="2">No data was found.</tr>
    </tbody>
    <!-- /ko -->
    <tbody data-bind="foreach: orders">
        <tr>
            <td data-bind="text: truck"></td>
            <td></td>
        </tr>
    </tbody>
</table>

如果您的 orders 是一个 ko.observableArray,您需要编写 orders() 来获取底层数组并从那里获取长度:

<!-- ko if: orders().length== 0 -->

您的 HTML 也无效,缺少 td 元素:

<!-- ko if: orders().length==0 -->
    <tbody data-bind="if: orders().length==0">
        <tr colspan="2"><td>No data was found.</td></tr>
    </tbody>
<!-- /ko -->

演示 JSFiddle.