我想用從服務器接收到的json初始化一個Knockout模型。用json初始化一個KnockOut模型
就目前而言,我有這樣的HTML:
<div class='liveExample'>
<p>First name: <input data-bind='value: firstName' /></p>
<p>Last name: <input data-bind='value: lastName' /></p>
<h2>Hello, <span data-bind='text: fullName'> </span>!</h2>
</div>
而且這個JavaScript:
// Here's my data model
var ViewModel = function(first, last) {
this.firstName = ko.observable(first);
this.lastName = ko.observable(last);
this.fullName = ko.computed(function() {
return this.firstName() + "/" + this.lastName();
}, this);
};
var viewModel = new ViewModel();
data = { firstName: 'test', lastName: 'bla' }; //received from the server side
viewModel.firstName(data.firstName)
viewModel.lastName(data.lastName)
ko.applyBindings(viewModel);
它的工作原理,但如果我有更多的領域,它可以痛苦。
我試圖使用映射插件是這樣的:
var viewModel = new ViewModel();
data = { firstName: 'test', lastName: 'bla' }; //received from the server side
viewModel = ko.mapping.fromJSON(data, viewModel)
ko.applyBindings(viewModel);
在這種情況下,該方法fullName
是未定義的。
我試着這樣做:
viewModel = ko.mapping.fromJSON(viewModel, data)
而且lastName
和firstName
是不確定的。
有沒有一個簡單的解決方案來做到這一點?
謝謝!
是[本小提琴](http://jsfiddle.net/JbWzE/ )更像你以後的樣子? – Jeroen