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

时间:2015-02-26 17:38:52

标签: javascript meteor spacebars

我正在使用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}}

你有什么想法吗?

1 个答案:

答案 0 :(得分:3)

{{#each}}遍历集合游标或JS对象数组。

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

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

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