【发布时间】:2013-12-24 13:45:08
【问题描述】:
我正在开发淘汰赛 js 框架,并使用映射插件来更新视图模型,其中包含先前保存的数据,如下面的小提琴中所述。
HTML:
<a href="#" onclick="outputJson();">Click here for output Json</a>
<a href="#" onclick="reloadData();">Click here to load old data</a>
</br>
<input type="text" data-bind="value:firstName" />
<input type="text" data-bind="value:lastName" />
<span data-bind="text:fullName"></span>
Javascript:
var updatedData = [];
var viewModel = {
myviewmodel: ko.observable().extend({noitfy:'always'})
};
function appViewModel() {
var self = this;
self.firstName = ko.observable('Bob');
self.lastName = ko.observable('Smith');
self.fullName = ko.computed(function () {
return self.firstName() + " " + self.lastName();
});
}
viewModel.myviewmodel(new appViewModel());
$(function () {
ko.applyBindings(viewModel.myviewmodel);
});
function outputJson() {
var unmapped = ko.mapping.toJS(viewModel.myviewmodel);
updatedData.push(unmapped);
viewModel.myviewmodel(new appViewModel());
}
function reloadData() {
viewModel.myviewmodel(ko.mapping.fromJS(updatedData[0]));
}
但每当我使用 unmap 选项时,使用 ko.mapping 插件的视图模型计算的 observable 不会更新。
场景是。 1. 给出名字 = 'Bob123',姓氏 = 'Smith' 2.现在点击“Click here for output Json”按钮,数据将被临时保存 3. 单击“单击此处加载旧数据”现在我们可以获取旧数据 firstname='Bob123',lastname='Smith',但是当我更改这些字段中的任何一个名字或姓氏时,它不会更新全名。
谁能告诉我如何使计算域在 unmap 上工作?
【问题讨论】:
标签: knockout.js