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);
        }
    };

[请原谅愚蠢的格式......只是试图避免水平滚动。]

请特别注意该函数的前三行,这ko.contextFor是 Knockout 2.0.0 版本中出现的一个重要特性,您可能会发现这在使用 Knockout 时会派上用场。

最后,这是我的解决方案的分叉小提琴:http: //jsfiddle.net/jimmym715/U6dc7/

如果您有任何问题,请告诉我。

于 2012-08-27T02:17:28.467 回答