Knockout JS不会更新映射对象

Knockout JS不会更新映射对象

问题描述:

我是Knockout JS的新手。我还没有找到谷歌在与淘汰赛js地图上的帮助。我有一个来自服务器的JSON。我使用knockout js映射库来映射JSON。与该属性关联的数据绑定dom不会更新。 我已经包含了一个即时通讯使用的小提琴。 注意被映射到observable的json对象。点击加载按钮时,json被映射,属性“test”的值应该显示在标签中。任何想法为什么它不显示在标签中?Knockout JS不会更新映射对象

在JS小提琴中有一个工作示例。

http://jsfiddle.net/sLZmQ/

这是被映射

var json = { 
"id": 9, 
"test": "John Doe", 
"firstName": "John", 
"lastName": "Doe", 
"referenceNumber": "BUY-08", 
"position": "Buyer", 
"type": "Buyer", 
"telephone": "028 82 240780", 
"email": "[email protected]", 
"departmentId": 3, 
"departmentName": "DEPT B", 
"country": "United Kingdom" 
}; 

我的脚本示例

var masterModel = function() 
{ 
var self = this; 
self.members = ko.observableArray([]); 
self.websites = ko.observableArray([]);  
self.seoData = ko.observable(); 
self.test = ko.observable(); 
self.loadWebsite = function(website) 
{ 

var json = { 
"id": 9, 
"test": "John Doe", 
"firstName": "John", 
"lastName": "Doe", 
"referenceNumber": "BUY-08", 
"position": "Buyer", 
"type": "Buyer", 
"telephone": "028 82 240780", 
"email": "[email protected]", 
"departmentId": 3, 
"departmentName": "DEPT B", 
"country": "United Kingdom" 
}; 

       self.test(ko.mapping.fromJS(json)) 
       console.log(self.test); 


}  
} 
    var master = new masterModel(); 

    ko.applyBindings(master); 

问题是,当你点击loadWebsite的$ data.test.test的JSON没有更新!

+0

对不起没有发生什么事?你的例子代码还是其他的吗? – 7zark7 2013-04-25 01:05:20

+0

小提琴。数据绑定没有被更新。 – user1566026 2013-04-25 01:07:34

+0

更新时间/如何?什么扭转了更新?小提琴看起来正确 – 7zark7 2013-04-25 01:08:53

我更新,它似乎有一些细微的变化工作:

http://jsfiddle.net/bYQu7/

关键的一点是我提领“测试”观察到:

<h1 data-bind="text: test().test">?</h1> 

而且我也初始化的初始值:

self.test = ko.observable({ test: ko.observable('WTF') }); 
+0

非常感谢你,我一直试图让这个3天! – user1566026 2013-04-25 01:38:10

+0

np,顺便说一句,我发现映射插件不值得麻烦,除非你正在做一些非常奇特的东西。 – 7zark7 2013-04-25 01:40:17