javascript - knockout 映射 - 来自 JS - 一个简单的例子失败

标签 javascript knockout.js knockout-mapping-plugin

我想找出我对 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/

相关文章:

javascript - mvc session 过期后,如何使整个页面重定向到登录?

javascript - 使用 JavaScript 禁用第三方 cookie

javascript - 如何在我的 typescript 中设置 tx_news 特定条件?

javascript - 何时将扩展附加复杂类型添加到 Breeze 实体上

asp.net-mvc - 当您使用带有 knockout 的 JS View 模型时,MVC 有什么地方吗?

javascript - 扩展 javascript 通用 View 模型。 (昏死)

javascript - AngularJS DOM 修改删除事件 -> 需要可行的解决方法实现架构

asp.net-mvc - 如何设置文本的最小长度以便显示 knockout 自动完成控件?

knockout.js - knockout.mapping - 将包含嵌套对象的整个对象转换为 knockout.observable

jquery - 使用 jQuery val() 更新 KnockoutJS 绑定(bind)文本框