如果长度问题,淘汰赛

gib*_*nic 3 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>
Run Code Online (Sandbox Code Playgroud)

JavaScript的:

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

ko.applyBindings(model)
Run Code Online (Sandbox Code Playgroud)

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

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

Ana*_*uza 10

只要改变代码,使用items().length替代items.length

<div data-bind="if: items().length">
    <h1>List</h1>
..
Run Code Online (Sandbox Code Playgroud)

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


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

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