gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:34:42 26 4
gpt4 key购买 nike

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

  • 在模板助手中,返回一个扁平化的深度优先目录列表,每个目录都标有深度。然后,在模板中使用一些丑陋的逻辑,我可以根据下一个目录的深度创建和关闭 li 标签。讨厌。
  • 我可以让我的模板助手根据数据构建 HTML 并将其返回到要显示的模板,犯了另一个主要错误,即在我的模板助手中包含表示性内容。
  • 承认,实际上,我的 UI 必须对其一次显示的文件夹深度有一些限制,并且只在我的模板中使用嵌套 for 循环。这将导致 4-5 个难看的嵌套 for 循环和不灵活的设计。
  • 完全跳过模板助手并使用 jquery 手动操作 dom,将其全部包装在 Deps.Autorun 中以保持 react 性。这可能需要一些 hackyness 来模拟 blaze 使 dom 与数据同步的方式。

我一定是忽略了这里的某些东西。有什么想法吗?

最佳答案

为什么不使用递归模板?

<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" }
]
}
}
})

关于meteor - 在 Meteor 的模板中呈现任意嵌套对象的公认方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28289392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com