在提交到服务器之前清理淘汰VM项目

时间:2013-03-27 19:35:39

标签: knockout.js

我很擅长淘汰赛。但我想要做的是在尝试将视图模型发送回服务器之前清理视图模型。我有几个ko.observable& ko.computed fields我不想发送回服务器(progress& entryType)

我有一个绑定到此事件的按钮。我首先根据其id找到vm中的项目。删除不必要的字段是我遇到麻烦的地方。

 self.addTransaction = function(transaction) {

            var selected = ko.utils.arrayFirst(self.transactions(), function(currentTransaction) {
                return currentTransaction.id() == transaction.id();
            });

            if (selected) {
                    console.log(selected);

                var items = ko.toJS(selected);
                var mappedItems = ko.utils.arrayMap(items, function(item) {
                    delete item.progress && item.entryType;
                    return item;
                });
                console.log(JSON.stringify(ko.toJS(mappedItems), null, 2));
                //send to server                

            } 
        };

有人能指出我如何做到这一点的正确方向吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

您应该查看knockout mapping plugin

它允许您指定映射时使用的映射,您可以告诉它忽略属性:

var mapping =
{
    'ignore': ["propertyToIgnore", "alsoIgnoreThis"]
};
var jsData = ko.mapping.toJS(viewModel, mapping);