我有一个项目列表。这些项目中的每一个都有一系列的孩子。每个孩子都有一系列的孙子。我想允许删除孙子。敲除:从另一个阵列内的阵列中移除元素
看到这个小提琴:http://jsfiddle.net/casudeo/FMWMR/18/
什么应该进入removeGrandchild功能?谢谢。
我有一个项目列表。这些项目中的每一个都有一系列的孩子。每个孩子都有一系列的孙子。我想允许删除孙子。敲除:从另一个阵列内的阵列中移除元素
看到这个小提琴:http://jsfiddle.net/casudeo/FMWMR/18/
什么应该进入removeGrandchild功能?谢谢。
这是我写的你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/
让我知道如果您有任何问题。
谢谢。这解决了我的问题。我一定会评论ko.contextFor。 – user1590749
这是与我的问题相关的更新链接:http://jsfiddle.net/casudeo/tAuUk – user1590749