Как удалить начальное значение 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));
Действия по воспроизведению:
- нажмите запустить в jsfidle
- нажмите на обновление на странице сгенерированного результата
- нажмите "Сохранить", и вы получите 4 сообщения с предупреждением.
- предоставлено начальное значение и одно с измененным значением и некоторым объектом:-)
Я думаю, что это как-то связано с _destroy, предоставленным в документации.
Требуемое решение:
- Как я могу предотвратить отправку начального значения?
- Что это за объект, который выбрасывается в оповещениях?
- Как я могу включить вычисленное свойство nameLength в отправку?
1 ответ
Не прошло и 5 минут после публикации вопроса, как я сам получил ответы
Требуемое решение:
Как я могу предотвратить отправку начального значения? Я снова применял данные, которые сделали это возможным. изменили код как
ko.mapping.fromJS(newData, {}, self);
Что это за объект, который выбрасывается в оповещениях?
Включая неопределенные данные объекта в коде. изменил код как
alert(ko.mapping.toJSON(self, mapping));
Как я могу включить вычисленное свойство nameLength в отправку?
var mapping = { 'include': ["nameLength"]};
Обновленную скрипку можно найти здесь