【发布时间】:2015-02-10 10:17:30
【问题描述】:
我正在使用最新的 KO 映射插件。这个想法是详细信息部分应该填充从 Ajax 调用中检索到的 JSON 数据。
var supervisorVM = {
supervisor: ko.observable()
};
-----------code to call custom data service which returns JSON---
if (supervisorDetails) {
$('#Detail').show();
supervisorVM.supervisor = ko.mapping.fromJS(supervisorDetails);
ko.applyBindings(supervisorVM, document.getElementById("Detail"));
}
<div id="Detail" class="side-widget" style="display:none">
<h2>Details</h2>
<strong>
Supervisor<br>
<span data-bind="text: supervisor.FullName"></span><br/>
</strong>
<span data-bind="text: supervisor.PhoneNumber"></span><br/>
<a data-bind="text: supervisor.Email, attr: { href : 'mailto:'+supervisor.Email() }"></a>
</div>
每次我运行“详细信息”部分时,都不会填充主管详细信息,即全名和电话号码。
我调试并确认 supervisorVM.supervisor 已填充,但数据绑定不起作用。
下面也试过了,没有运气:
supervisorVM.supervisor(ko.mapping.fromJS(supervisorDetails));
我已经花了 2 个多小时了,有人可以帮忙看看我做错了什么吗?
谢谢。
【问题讨论】:
-
对我来说它工作正常,请查看jsfiddle.net/supercool/74dh736s/16。如果您可以在小提琴中重现该问题,则很容易解决。
-
您进行查询调用以显示 Detail div 而不是使用布尔可观察对象以及将绑定如此专门应用于 DOM 元素的事实使我认为您没有正确使用敲除这可能是你大部分挣扎背后的原因。
标签: knockout.js