【发布时间】:2012-02-28 01:36:40
【问题描述】:
我刚开始使用 knockoutjs,并且正在尝试构建动态树视图。为了简化,我删除了与问题无关的所有内容。树视图将包含嵌套的 UL 标记。
html:
<div id="pnlDestinations">
<ul data-bind="template: { name: 'GroupTemplate', foreach: Groups }"></ul>
</div>
<script type="text/html" id="GroupTemplate">
<li>
<a href="#" data-bind="text: GroupName, click: function() { RetrieveDestinations($data); }"></a>
<ul data-bind="template: { name: 'DestinationTemplate', foreach: Destinations }"></ul>
</li>
</script>
<script type="text/html" id="DestinationTemplate">
<li>
<a href="#" data-bind="text: DestinationName"></a>
</li>
</script>
代码:
function ViewModel(groups) {
Groups = ko.mapping.fromJS(groups);
RetrieveDestinations = function (group) {
$.getJSON('GetDestinations?id=' + group.GroupId(), function (data) {
group.Destinations(ko.mapping.fromJS(data));
});
}
}
$(function () {
$.getJSON("GetGroups", function (data) {
ko.applyBindings(new ViewModel(data));
});
});
所以我将树视图绑定在两个级别(使用 2 个模板),但我只在“GetGroups”中检索一个级别(目标存在,但是是一个空数组)。
单击组时,将在 RetrieveDestinations() 方法中检索目标,并且应该替换组中的空数组。但是,它们不会出现在我的树形视图中。
树视图的绑定应该是正确的,因为如果我在“GetGroups”中包含目的地,一切都会正确呈现。
【问题讨论】:
标签: jquery knockout.js knockout-mapping-plugin