0

アイテムのリストがあります。これらの各アイテムには、子の配列があります。それぞれの子供には孫がたくさんいます。孫の連れ去りを許可したい。

このフィドルを参照してください:http://jsfiddle.net/casudeo/FMWMR/18/

removeGrandchild関数には何を入れる必要がありますか?ありがとうございました。

4

1 に答える 1

0

これが私があなたのremoveGrandchild関数のために書いたものです:

    removeGrandchild = function(data, event) {
        var context = ko.contextFor(event.currentTarget);
        var dataGrandchild = context.$data;
        var parentItemChild = context.$parent;

        var grandchildToRemove = 
            ko.utils.arrayFirst(parentItemChild.grandchildren(), 
                                function(grandchild) {
            return (grandchild.name() === dataGrandchild.name());
        });
        var indexOfGrandchildToRemove = 
            ko.utils.arrayIndexOf(parentItemChild.grandchildren(), 
                                  grandchildToRemove);
        if (indexOfGrandchildToRemove >= 0) {
            parentItemChild.grandchildren.splice(indexOfGrandchildToRemove, 1);
        }
    };

[間抜けなフォーマットはご容赦ください...水平スクロールを避けようとしているだけです。]

Knockoutの2.0.0リリースで導入された重要な機能であるように、関数の最初の3行に特に注意してko.contextForください。これは、ノックアウトを操作するときに非常に役立つことがわかります。

最後に、これが私のソリューションの分岐したフィドルです:http: //jsfiddle.net/jimmym715/U6dc7/

ご不明な点がございましたら、お気軽にお問い合わせください。

于 2012-08-27T02:17:28.467 に答える