Knockout:从另一个数组内的数组中删除元素

时间:2012-08-27 01:31:18

标签: knockout.js

我有一个项目列表。每个项目都有一系列的孩子。每个孩子都有一系列的孙子孙女。我想允许搬走孙子。

看到这个小提琴:http://jsfiddle.net/casudeo/FMWMR/18/

removeGrandchild函数应该怎么做?谢谢。

1 个答案:

答案 0 :(得分: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版本中出现的一个重要特性,你可能会发现它会派上用场在淘汰赛中工作很多。

最后,这是我的解决方案:http://jsfiddle.net/jimmym715/U6dc7/

如果您有任何问题,请与我们联系。