我有一个代表导航的嵌套数组(请参阅下面的 jsFiddle)。我想用 knockoutJS 渲染这个导航,但不知道怎么做。我已经浏览了官方文档,但它们只涵盖了一个简单的列表/集合。
user659025
问问题
780 次
1 回答
1
您需要使用模板绑定。
更新:我删除了无容器 foreach 并用于模板绑定的 foreach 选项。下面的工作示例也更新了
HTML:
<script type="text/html" id="node-template">
<li>
<a data-bind="text: Title, attr:{href: Target}"></a>
<ul data-bind="template: { name: 'node-template', foreach: Children }"></ul>
</li>
</script>
<ul data-bind="template: { name: 'node-template', foreach: Nodes }"></ul>
JS:
function NavigationNode(target, title)
{
var self = this;
self.Target = target || "[No Target]";
self.Title = title || "[No Title]";
self.Children = ko.observableArray([]);
};
function NavigationViewModel()
{
var self = this;
self.Nodes = ko.observableArray([]);
var node1 = new NavigationNode("/parent", "Parent");
var node2 = new NavigationNode("/parent/sub1", "Sub 1");
var node3 = new NavigationNode("/parent/sub1/sub2", "Sub 2");
node2.Children().push(node3);
node1.Children().push(node2);
self.Nodes.push(node1);
ko.applyBindings(this);
};
new NavigationViewModel();
这是一个jsFiddle。
于 2012-07-11T09:43:58.053 回答