【问题标题】:inject div element between handlebars each在每个车把之间注入 div 元素
【发布时间】:2017-08-04 13:39:04
【问题描述】:

我想在#each的第四个元素之后放置一个div

<script type="text/template" id="template">
{{#each names}}
  {{name}}
{{/each}}
</script>

如果没有 4 个元素,则在最后。我怎样才能做到这一点?

【问题讨论】:

  • 能否也分享一下您的助手,以便更轻松地进行编辑?

标签: meteor handlebars.js spacebars


【解决方案1】:

html

{{#each names}}
  {{name}}
  {{#if fourth @index count}}
     <div></div>
  {{/if}}
{{/each}}

js

Template.templateName.helpers(
   {
      count: function(){
           //if you are using iron router to return names
           return Router.current().data().names.find().count();
           // or you could get length from a reactive variable or session 
           // or if you are returning names as a helper, then set the length there
      },
      fourth: function(i, count){
         i = i+1;
         return i%4===0 || count===i;
      }
   }
)

【讨论】:

  • 谢谢.. 工作正常
  • 删除插入的 div 上方的每个“名称”时,我希望插入的 div 下方的“名称”元素向上移动。我该怎么做?
  • 你是如何删除它们的?如果您将它们从集合中删除,从而从光标中删除,我想 Blaze 只会重新索引它们。所以它应该会自动解决你的问题。
  • 我猜从客户端集合中删除该项目不会使 {{#each}} 重新渲染。所以这只会移动上面插入的 div(现在将在第三个“名称”之后)。所以我是否必须使用自动运行并使用 jquery 方法将其移回第四个“名称”之后?
  • 收藏只在客户端吗?即使这样,它也可能会重新渲染。尽管出于安全原因,您应该编写一个方法调用并删除服务器上的文档,并拒绝客户端上的任何删除/更新/插入请求。
猜你喜欢
  • 2013-06-16
  • 2018-09-09
  • 1970-01-01
  • 2013-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
  • 1970-01-01
  • 2020-03-22
相关资源
最近更新 更多