3

私はノックアウトに少し慣れていないので、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機能しないのですか?ノックアウトのドキュメントには、その種のテストを受け入れると書かれています。データバインドをに変更すると、長さが常にゼロになることがわかりましたif: console.log(items.length)。観察可能にして手動で管理する必要がありますか?

4

1 に答える 1

10

items().length代わりに使用するコードを変更するだけですitems.length

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

length 基になる配列を操作するネイティブJavaScript配列関数です。


Knockout.jsのドキュメントをご覧ください。そこにはたくさんの役立つ情報があります。
ドキュメントから:

他のobservableと同様に、パラメーターなしの関数としてobservableArrayを呼び出すことにより、基になるJavaScript配列を取得できます 。

于 2012-10-08T16:17:12.967 に答える