首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Meteor中,在模板中呈现任意嵌套对象的公认方法是什么?

在Meteor中,在模板中呈现任意嵌套对象的公认方法是什么?
EN

Stack Overflow用户
提问于 2015-02-03 00:32:49
回答 1查看 379关注 0票数 2

我将从模板助手返回一个将其他对象嵌入到任意深度(表示目录树)的对象,并将其作为嵌套列表呈现到模板中。由于空格键的原理是将逻辑排除在模板之外,所以它所提供的只是循环和if语句。这对于迭代大多数对象和数组(甚至嵌套到已知深度的对象和数组)是很好的,但是对于任意深度的对象来说,这是不够的。我想出了几种可能的策略,但我觉得没有一种是特别干净的:

  • 在模板助手中,返回一个扁平的深度优先目录列表,每个目录都带有深度标记。然后,在模板中使用一些丑陋的逻辑,我可以根据下一个目录的深度创建和关闭li标记。糟透了。
  • 我可以让我的模板助手从数据中构建HTML并将其返回到要显示的模板中,这是我的模板助手中包含表示性内容的另一个主要罪过。
  • 承认,实际上,我的UI必须对它一次显示的文件夹的深度有一定的限制,只需在模板中使用嵌套的for循环即可。这将导致4-5丑陋嵌套的循环,和一个不灵活的设计。
  • 完全跳过模板助手,使用jquery手动操作dom,将其包装在Deps.Autorun中以保持反应性。这可能需要一些黑客,以模仿烈焰如何保持dom与数据同步。

我一定是在看什么东西。有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-03 00:37:43

为什么不使用递归模板呢?

代码语言:javascript
复制
<template name="tree">
  {{value}}

  <ul>
    {{#each children}}
      <li>{{> tree}}</li>
    {{/each}}
  </ul>
</template>

<template name="container">
  {{> tree treeData}}
</template>

Template.container.helpers({
  treeData: function () {
    return {
      value: "level 1",
      children: [
        { value: "level 2" },
        { value: "level 2" },
        { value: "level 2" }
      ]
    }
  }
})
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28289392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档