KnockoutJS:如何从子数组中删除项?

Ami*_*ava 0 javascript jquery knockout.js

问题:

我还在学习淘汰赛,如果我的方法有误,请指导我.

这是我的小提琴:http://jsfiddle.net/amitava82/wMH8J/25/

在编辑时,我收到了在视图中表示的json模型,我想从模型中删除某些项(子数组)或操作(父数组)(我删除了添加UI以便从简单中添加更多操作以简化)然后最终将模型传递回服务器.

现在,从根级别删除很容易.我坚持用删除这是个别项目 ActionParamatersActionItems阵列.

题:

如何从子阵列中删除项目?

nil*_*gun 6

您可以将单击的actionItem和包含的action数组传递给deleteActionItem函数,如下所示:

<!-- /ko -->
<a href="javascript:void(0)" data-bind="click: $root.deleteActionItem.bind($data, $parent)">remove item</a>
Run Code Online (Sandbox Code Playgroud)

在您的模型中,您需要使用ko.mapping插件使每个actionItem数组都可观察(请参阅编辑函数)

var viewModel = function() {
    var self = this;
    self.data = ko.observable();

    self.edit = function() {
       self.data ( ko.mapping.fromJS(editData) );
    }
    self.log = function() {
        console.log(self.data())
    }
    self.deleteAction = function(data) {
       //delete root node
       self.data().remove(data)
    }
    self.deleteActionItem = function(data,actionItem) {
        //delete items
        data.ActionItems.remove(actionItem);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您将能够从deleteActionItem函数中的数组中删除该项,并且由于该数组现在是可观察的,因此结果将反映到绑定的dom元素.