2

Knockout.js について学習していますが、ネストされたデータの更新に関して質問があります。私が行っていることは可能ですか、それともモデルを再考する必要がありますか?

ビューモデルのデータは次のとおりです。

this.menu = ko.observableArray([
    {text: "one",
        children: [{text: "child 1.1", checked: true},{text: "child 1.2", checked: false}]},
    {text: "two",
        children: [{text: "child 2.1", checked: false},{text: "child 2.2", checked: true}]},
    {text: "three",
        children: [{text: "child 3.1", checked: false}]}
]);

フィドルは次のとおりです。

http://jsfiddle.net/4aqrg/1/

データは最後に書き出されるので、その状態を確認できます。

HTMLビューでチェックボックスが変更されたときにチェックされた値を更新したいのですが、これは起こっていません。状態の変化の背後にあるアクションを実行したいと思います。この場合、アクションはグラフにデータ系列を表示することです (まだその部分を実行します)。

前もってありがとう、マット

4

1 に答える 1

3

あなたの例の問題は、配列を観察可能にしたことですが、個々のプロパティは観察可能ではありません。

更新するには、「チェック済み」の各プロパティを ko.observable にする必要があります。

このような:

this.menu = ko.observableArray([
        {text: "one",
            children: [{text: "child 1.1", checked: ko.observable(true)},{text: "child 1.2", checked: ko.observable(false)}]},
        {text: "two",
            children: [{text: "child 2.1", checked: ko.observable(false)},{text: "child 2.2", checked: ko.observable(true)}]},
        {text: "three",
            children: [{text: "child 3.1", checked: ko.observable(false)}]}
    ]);

テキストも監視可能にしたい場合は、それもラップする必要があります: ko.observable("child 1.1")

于 2012-11-20T17:55:25.830 に答える