我对淘汰赛有点新意,我无法让if
数据绑定工作......
HTML:
<div data-bind="if: items.length">
<h1>List</h1>
<ul data-bind="foreach: items">
<li data-bind="text: $data">
</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)
,我看到该长度始终为零。我是否必须进行观察并手动管理?
答案 0 :(得分:10)
只需更改代码即可使用items().length
代替items.length
<div data-bind="if: items().length">
<h1>List</h1>
..
length
是在底层数组上运行的本机JavaScript数组函数。
看看Knockout.js documentation。在那里你可以找到很多有用的信息 来自文档:
您可以通过调用来获取底层JavaScript数组 observableArray 作为没有参数的函数,就像任何其他函数一样 观察到。