考虑我的预期输出的这个模型:
Mongo数据库中的数据结构看起来像这样 - 我没有将子类别嵌套在文档中,因为我仍然希望能够原子地更新子文档 - 我还想在下面允许动态数量的图层。从我所看到的,Mongo目前不允许轻松,动态地访问嵌套文档。
topmost_category = {
_id : "foo",
category_name : "Example",
parent_category: null,
subcatories: [ "sub_foo1", "sub_foo2", ... ]
}
child_category = {
_id = "sub_foo1",
category_name : "Example 2",
parent_category: "foo",
subcategories: []
}
底层HTML只包含嵌套的-branches。当前选定的类别获得“活动”类,前面的图标名为“icon-folder-close”和“icon-folder-open”(<i class="icon-folder-close"></i>
)。
现在,我可以使用this的答案来创建一个完整的树状结构。但是,所有分支都是“开放的”。我如何制作它,以便只有当前选定的分支可见,如我的模型中所示(并且仍然具有反应引导)?
答案 0 :(得分:2)
你可以看到Hubert在这里描述的非常类似方法的实现:
http://www.meteorpedia.com/read/Trees
这是wiki(工作)类别浏览器功能的代码(你可以在那里看到一个演示)。
Hubert的答案的主要区别在于它使用带有会话变量的发布/订阅来实时获取已打开子项的数据。
答案 1 :(得分:1)
最简单的方法是为分支添加一个布尔标志,表示它们是否属于当前路径,因此应该打开。
<template name="branch">
{{#if open}}
<div class="openBranch">
...
{{#each children}}
...
{{/each
</div>
{{else}}
<div class="closedBranch">
...
</div>
{{/if}}
</template>
现在,此标志的设置和管理取决于应用程序的逻辑。您在哪里存储当前选定的分支?
我认为该州只限于一个客户。在这种情况下,一种解决方案是:
open
标志实现为帮助程序:
Template.branch.open = function() {
return _.indexOf(openedBranches, this._id) !== -1;
}