为什么{{#each}}能正常工作,而{{#with}却不能

Why Does {{#each}} Work Properly While {{#with}} Does Not?

本文关键字:不能 工作 #with #each 常工作 为什么      更新时间:2024-05-30

我正在使用Meteor.js进行一个项目,在使用Handlebar时遇到了一些问题:我想检索集合的最后一项,并显示字段:包含html的文本:

这是我的javascript代码:

Template.postVerif.helpers({
  'lastPost' :function(){
    lastPost = Posts.find({}, {sort:{timestamp:-1}, limit :1}).fetch();
       return lastPost
  }
})

在html中,手把{{#each}}正在工作,但{{#with}}没有工作看到只有一件物品被退回,这有点奇怪。

{{#each lastPost}}  
    {{{text}}}
{{/each}}
 {{#with lastPost}}
    {{{text}}}
 {{/with}}

你知道为什么会这样吗?

{{#each}}在集合游标或JS对象数组上迭代。

{{#with}}只是设置传递给块辅助对象的任何参数的当前数据上下文。

如果希望{{#with}}块正常工作,请不要从助手返回数组(对通过Posts.find({},...);获得的光标调用fetch将其转换为数组)。

相反,您应该使用Posts.findOne({},...);来仅获得作为普通对象的第一个匹配结果。