如果长度问题,淘汰赛

时间:2012-10-08 16:13:28

标签: knockout.js

我对淘汰赛有点新意,我无法让if数据绑定工作......

HTML:

<div data-bind="if: items.length">
    <h1>List</h1>

    <ul data-bind="foreach: items">
        <li data-bind="text: $data">
            &nbsp;
        </li>
    </ul>
</div>

的javascript:

model =
    items: ko.observableArray(["A", "B", "C"])

ko.applyBindings(model)

沙箱:http://jsfiddle.net/gibatronic/EXwrR/

为什么if: items.length不起作用?淘汰赛documentation说它接受了那种测试。通过将数据绑定更改为if: console.log(items.length),我看到该长度始终为零。我是否必须进行观察并手动管理?

1 个答案:

答案 0 :(得分:10)

只需更改代码即可使用items().length代替items.length

<div data-bind="if: items().length">
    <h1>List</h1>
..

length 是在底层数组上运行的本机JavaScript数组函数。


看看Knockout.js documentation。在那里你可以找到很多有用的信息 来自文档:

  

您可以通过调用来获取底层JavaScript数组    observableArray 作为没有参数的函数,就像任何其他函数一样   观察到。