【发布时间】:2011-08-29 08:45:04
【问题描述】:
我有以下代码:
function Session(name, index) {
this.Messages = [];
this.Name = name;
this.Index = index;
}
var vm = {};
vm.Sessions = ko.observableArray([new Session("Foo", 0), new Session("Bar", 1)]);
ko.applyBindings();
vm.Sessions()[0].Messages.push("Hello foo");
沿着这个观点:
<div data-bind="template: {name: 'TopTemplate', foreach: Sessions}">
</div>
<script type="text/html" id="TopTemplate">
<p>
${$data.Name}
<ul data-bind="template: {name: 'NestedTemplate', foreach: Sessions[${$data.Index}]}"></ul>
</p>
</script>
<script type="text/html" id="NestedTemplate">
<li>
${$data}
</li>
</script>
如您所见,有一个包含数组的对象。所以我制作了可观察的会话数组,它变得可观察,包括内部属性。我在这里想要的是显示嵌套的“中继器”。
昨天我以某种方式成功执行了这个脚本。没有显示属性名称的有趣之处,即Sessions[${$data.Index}].Messages。不幸的是,我删除了那个测试脚本。
现在我尝试重新创建,但它不起作用。
PS。问题是我不想让它在没有显示相关属性的情况下工作。我只是想让工作成为嵌套模板。
【问题讨论】:
标签: javascript templates knockout.js multidimensional-array knockout-templating