2013-03-27 60 views
0

我是淘汰赛的新手。但是我想要做的是在尝试将其发送回服务器之前清理一个视图模型。我有几个ko.observable & ko.computed字段我不想发送回服务器(进度& entryType)在提交给服务器之前清理淘汰VM项目

我有一个按钮,该按钮绑定到此事件。我首先根据其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

你应该看看knockout mapping plugin

它允许你指定的地图时,地图的使用,你可以告诉它忽略属性:

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

谢谢保罗。我忽略了这个插件! – 2013-03-27 21:30:59