我想找出我对 Knockout 映射库的误解。我已将其简化为一个简单的示例,并且仍然可以使用 fromJS
调用使其失败(而不是使用映射的变量进行更新)。
在这个例子中我从根本上犯了什么错误?
// Here's my view model
var ViewModel = function() {
this.firstName = ko.observable('first');
this.lastName = ko.observable('last');
};
var myVM = new ViewModel();
ko.applyBindings(myVM); // Apply to Knockout (works)
myVM.lastName('maiden name'); // Test an update (works)
var newData = {firstName: 'new', lastName: 'person'};
// Try update the ViewModel
ko.mapping.fromJS(newData, myVM); //(No update, or error)
// Intended result - UI updates to 'new person'
以及相应的 View :
<div class='liveExample' >
<p>First name: <input data-bind='value: firstName' /></p>
<p>Last name: <input data-bind='value: lastName' /></p>
</div>
我的 JS Fiddle example .
最佳答案
ko.mapping.fromJS
处理参数有点棘手(见我的 answer here ),所以第二个参数通常是映射选项:
ko.mapping.fromJS(newData, {} /* mapping options */, myVM);
演示 JSFiddle .
关于javascript - knockout 映射 - 来自 JS - 一个简单的例子失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18756730/