Как удалить начальное значение viewmodel при использовании плагина отображения knockoutjs?

Я использую плагин отображения knockoutjs. Я привязываю данные к viewmodel с помощью плагина. Затем я изменяю данные и отправляю их обратно. При отправке я получаю начальное значение модели представления и измененное значение.

скрипка здесь: http://jsfiddle.net/jarajesh/HV7g4/3/

   // Here's my data model
var ViewModel = function (data) {
    var self = this;
    ko.mapping.fromJS(data, {}, self);

    self.nameLength = ko.computed(function() {
      return self.firstName().length;
    }, self);
    self.finalstring = ko.observable('');
    self.numberOfClicks = ko.observable(0);
       self.incrementClickCounter = function() {
           var previousCount = self.numberOfClicks();
            self.numberOfClicks(previousCount + 1);
        };

       self.refresh = function() {
           var newData = {'firstName': 'refreshed', 'lastName': 'person'};
           ko.applyBindings(new ViewModel(newData));
        };

    self.save = function () {
        alert(ko.mapping.toJSON(self));
        //$.ajax({
          //  url: "Knockout2/Save",
            //type: "post",
            //contentType: "application/json",
            //data: ko.mapping.toJSON(self),
            //success: function (response) {
              //  alert(response.Status);
            //}
        //});
        //self.finalstring=ko.mapping.toJSON(self);
    };
};

var newData = {'firstName': 'first', 'lastName': 'person'};
ko.applyBindings(new ViewModel(newData));

Действия по воспроизведению:

  1. нажмите запустить в jsfidle
  2. нажмите на обновление на странице сгенерированного результата
  3. нажмите "Сохранить", и вы получите 4 сообщения с предупреждением.
  4. предоставлено начальное значение и одно с измененным значением и некоторым объектом:-)

Я думаю, что это как-то связано с _destroy, предоставленным в документации.

Требуемое решение:

  1. Как я могу предотвратить отправку начального значения?
  2. Что это за объект, который выбрасывается в оповещениях?
  3. Как я могу включить вычисленное свойство nameLength в отправку?

1 ответ

Не прошло и 5 минут после публикации вопроса, как я сам получил ответы

Требуемое решение:

  1. Как я могу предотвратить отправку начального значения? Я снова применял данные, которые сделали это возможным. изменили код как

    ko.mapping.fromJS(newData, {}, self);
    
  2. Что это за объект, который выбрасывается в оповещениях?

    Включая неопределенные данные объекта в коде. изменил код как

    alert(ko.mapping.toJSON(self, mapping));
    
  3. Как я могу включить вычисленное свойство nameLength в отправку?

    var mapping = { 'include': ["nameLength"]};
    

Обновленную скрипку можно найти здесь

Другие вопросы по тегам