2013-03-27 7 views
0

Я довольно новичок в нокауте. Но то, что я пытаюсь сделать, - это очистить модель просмотра, прежде чем пытаться отправить ее обратно на сервер. У меня есть несколько ko.observable & ko.computed полей Я не хочу, чтобы отправить обратно на сервер (прогресс & EntryType)Очистить нокаутом элемент VM перед отправкой на сервер

У меня есть кнопка, которая связана с этим событием. Я начинаю с поиска элемента в vm на основе его id. Удаление ненужных полей - вот где у меня проблемы.

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

Спасибо Павла. Я забыл плагин! –

Смежные вопросы