【发布时间】:2014-05-27 09:39:48
【问题描述】:
我正在使用 knockoutjs 映射插件。 我正在使用插件将数据绑定到视图模型。 然后我修改数据并提交回来。 提交时,我得到了视图模型的初始值和更改后的值。
小提琴在这里: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 包含到提交中?
【问题讨论】:
标签: knockout.js knockout-mapping-plugin