山姆,你的小提琴数据太复杂了。提问时,如果您提炼出相关的元素,您将提高获得帮助的机会。我已经制作了一个简单的小提琴来说明嵌套数组和删除。
这是 HTML,请注意 remove 函数在数组的上下文中,因此它调用一个函数 on$parent
而不是$root
. 这让我们可以直接针对上面的上下文,而不是根。
<ul data-bind="foreach: editData">
<li>
<span data-bind="text: name"></span>
<button data-bind="click: $parent.removeParent">Remove Parent</button>
...
<!-- This line is on the child context -->
<button data-bind="click: $parent.removeChild">Remove Child</button>
</ul>
这是父模型。注意这里的移除功能是为了移除孩子。当removeChild
函数被调用时,它来自子上下文请求$parent
,它将调用此删除。
var Parent = function(name, children) {
var self = this;
self.name = ko.observable(name);
self.children = ko.observableArray(children);
self.removeChild = function(child) {
self.children.remove(child);
};
};
您的小提琴也没有使用模型,这是 MVVM 开发的一个重要方面。您应该考虑阅读淘汰网站上的教程,以更好地了解如何构建淘汰应用程序。它将帮助您更轻松地处理此类问题。