【问题标题】:knockout if length issue如果长度问题淘汰赛
【发布时间】:2012-10-09 16:32:51
【问题描述】:

我对淘汰赛有点陌生,我无法让 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),我看到长度始终为零。我是否必须制作一个可观察的并手动管理它?

【问题讨论】:

  • 我建议创建一个新的计算 observable 来评估它。让您的视野更干净。

标签: knockout.js


【解决方案1】:

只需更改代码以使用items().length 而不是items.length

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

length 是对底层数组进行操作的原生 JavaScript 数组函数。


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

您可以通过调用 observableArray 作为一个没有参数的函数,就像任何其他的一样 可观察到。

【讨论】:

  • 你应该注意到它的items() 是因为敲除 observables 实际上是函数。您的回答不清楚为什么items.length 不正确。
  • @Tyrsius 官方文档上有一个链接,其中精确描述了observableArray 是什么以及如何使用它。我已经更新了答案。
猜你喜欢
  • 2015-03-30
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 2012-07-29
  • 2013-01-23
  • 2012-06-13
  • 2014-12-11
相关资源
最近更新 更多