从流星中的循环调用外部模板

Posted

技术标签:

【中文标题】从流星中的循环调用外部模板【英文标题】:Calling external template from a loop in meteor 【发布时间】:2017-03-31 09:30:12 【问题描述】:

来自 Meteor 模板教程:(https://www.meteor.com/tutorials/blaze/templates)

我们看到我们可以在tasks 的循环内调用模板> task。但是,当我尝试在自己的文件中获取任务模板时 - 它不再有权访问数据。这样做的正确方法是什么?

<body>
  <div class="container">
    <header>
      <h1>Todo List</h1>
    </header>

    <ul>
      #each tasks
        > task
      /each
    </ul>
  </div>
</body>

<template name="task">
  <li>text</li>
</template>

【问题讨论】:

这是因为您需要为模板设置一个data context#each 正在为您的主容器执行此操作。你可以用#with 做一个文档 但是我还在用#each,只是任务模板不在同一个文件里了。我将研究为模板设置数据上下文。谢谢! “不再有权访问数据”是什么意思?是不是说task里面不能访问外层模板的数据? 是的,但正如我在回答中指出的那样,这不是因为它是外部的,而是因为所需的助手不可用。现在一切都好。再次感谢! 【参考方案1】:

想通了。基本上,我在main.js 中导入了task.html,而不是随附的task.js。所以我所有的条件助手都没有加载,因此没有工作。

【讨论】:

【参考方案2】:

我们需要将值传递给我们正在调用的模板。我假设任务助手已实现。这里我使用 'this' 传递当前值。

<body>
   <div class="container">
      <header>
         <h1>Todo List</h1>
      </header>
      <ul>
        #each tasks
          > task this
        /each
     </ul>
  </div>
</body>
<template name="task">
   <li>this</li>
</template>

【讨论】:

以上是关于从流星中的循环调用外部模板的主要内容,如果未能解决你的问题,请参考以下文章

jsRender - 如何从嵌套模板调用外部模板

您将如何将订阅管理器与流星的模板订阅一起使用?

会话更改时不调用流星助手

从外部方法调用 ruby​​ 循环上的下一个

使用外部 API 调用和 findOneAndUpdate 循环结果

如何从流星模板事件中的 html 标签中获取文本?