【发布时间】:2013-04-25 09:32:28
【问题描述】:
我对 Knockout JS 很陌生。在使用淘汰赛 js 进行映射时,我没有通过 Google 找到太多帮助。我有一个来自服务器的 JSON。我用淘汰赛 js 映射库映射 JSON。与该属性关联的数据绑定 dom 不会更新。 我已经包含了我正在使用的脚本的小提琴。 注意被映射到 observable 的 json 对象。单击加载按钮时,会映射 json 并且属性“test”的值应该显示在标记中。任何想法为什么它没有出现在标签中?
JS fiddle 中有一个工作示例。
这是被映射的 JSON
var json = {
"id": 9,
"test": "John Doe",
"firstName": "John",
"lastName": "Doe",
"referenceNumber": "BUY-08",
"position": "Buyer",
"type": "Buyer",
"telephone": "028 82 240780",
"email": "m@email.com",
"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": "m@email.com",
"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 的数据未显示在数据绑定中。
-
没有显示“加载按钮”。