Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 如何使用meteor模板创建类似目录的结构?_Templates_Recursion_Directory_Meteor - Fatal编程技术网

Templates 如何使用meteor模板创建类似目录的结构?

Templates 如何使用meteor模板创建类似目录的结构?,templates,recursion,directory,meteor,Templates,Recursion,Directory,Meteor,考虑一下我的预期输出模型: Mongo DB中的数据结构如下所示-我没有将子类别嵌套在文档中,因为我仍然希望能够以原子方式更新子文档-我还希望允许下面的层数量动态变化。据我所见,Mongo目前不允许轻松、动态地访问嵌套文档 topmost_category = { _id : "foo", category_name : "Example", parent_category: null, subcatories: [ "sub_foo1", "sub_foo2", ... ]

考虑一下我的预期输出模型:

Mongo DB中的数据结构如下所示-我没有将子类别嵌套在文档中,因为我仍然希望能够以原子方式更新子文档-我还希望允许下面的层数量动态变化。据我所见,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只是由嵌套分支组成。当前选定的类别将获得一个“活动”类,前面的图标命名为“图标文件夹关闭”和“图标文件夹打开”(


现在,我可以用这个答案来创建一个完整的树状结构。然而,所有分支机构都将“开放”。如何使当前选择的分支像我的实体模型中所示那样可见(并且仍然是被动启动的)?

最简单的方法是为分支添加一个布尔标志,指示它们是否属于当前路径,因此应该打开

<template name="branch">

    {{#if open}}
        <div class="openBranch">
            ...
            {{#each children}}
                ...
            {{/each
        </div>
    {{else}}
        <div class="closedBranch">
            ...
        </div>
    {{/if}}

</template>

  • 当用户更改选择时,清除阵列并使用从选定分支到顶部的路径填充它

您可以在这里看到与Hubert描述的方法非常相似的实现:

这是wiki(工作)类别浏览器功能的代码(您可以在那里看到演示)


Hubert回答的主要区别在于,它使用一个带有会话变量的发布/订阅来实时获取打开的子项的数据。

看起来是个好主意。我会在今天晚些时候尝试一下,然后再回复你。我确实使用了你想法的一个变体,详细说明如下,这正是我想要的。由于我在这段时间内提出了休伯特解的一个变体,我将看看你的建议有什么不同。但你的解决方案正是我想要的。树形结构,具有可见的兄弟/子级到活动路径和被动启动!
Template.branch.open = function() {
    return _.indexOf(openedBranches, this._id) !== -1;
}