meteor.js 和空格键 - 在嵌套循环中传递变量

Posted

技术标签:

【中文标题】meteor.js 和空格键 - 在嵌套循环中传递变量【英文标题】:meteor.js & spacebars - passing variables in nested loop 【发布时间】:2016-03-13 20:04:11 【问题描述】:

上下文

我正在尝试使用 Handlebars 循环遍历事件,然后嵌套循环遍历图像。我只需要选择与事件循环当前正在进行的事件相对应的图像。


问题

我无法在嵌套的图像中传递事件的 _id。有解决办法吗? 我知道我可以通过帮助程序传递变量,但如果有更简单的方法会很好。


以下是目前无法使用的元代码:

//attach venue image to each venue
#each myVenues
   #each myImages
      #if myVenues._id == myImages._id
         <img src="this.url>
      /if
   /each
/each

任何帮助将不胜感激!

【问题讨论】:

How can I use if condition on the meteor template?的可能重复 meteor 不再使用把手,它现在有自己的模板语言,称为空格键。你的问题很常见。请查看重复的问题。 @ChristianFritz - 谢谢,但正如我所提到的,我已经知道我可以使用助手 - 我正在寻找类似的东西 - handlebarsjs.com/block_helpers.html#block-params 那么您仍在查看错误的文档。您可能想阅读空格键文档:github.com/meteor/meteor/blob/master/packages/spacebars/… 抱歉,在我看到第二条评论之前回答了你的第一条评论。现已全部解决,感谢您的帮助! 【参考方案1】:

最新版本的空格键支持引用父级。试试:

#each myVenues
    #each myImages
        #if ../_id == myImages._id
            <img src="this.url>
        /if
    /each
/each

编辑:

Christian Fritz 指出 if 语句中的条件逻辑不适用于空格键。如果你设置了一个帮助器来评估条件逻辑,你仍然可以让它工作:

#each myVenues
    #each myImages
        ifequals ../_id myImages._id
            <img src="this.url>
        /if
    /each
/each

然后在一个助手中:

Template.registerHelper('ifequals', function(a,b) 
    return a === b;
);

【讨论】:

祝你好运,因为我认为它不会起作用。空格键本身不支持条件中的逻辑。我想你正在寻找atmospherejs.com/ostrio/templatehelpers 你是对的,条件逻辑将失败,但是对父级的引用应该有效。如果他已经有模板助手来评估等价逻辑,那么他可以将它们都作为参数传入:ifequals ../_id myImages._id 根据 Christian 的建议,我最终添加了 ostrio 包 - 最终代码是 #if compare avenueId '===' ../_id - 完美运行。非常感谢你们的帮助,非常感谢。

以上是关于meteor.js 和空格键 - 在嵌套循环中传递变量的主要内容,如果未能解决你的问题,请参考以下文章

变量可以传递给嵌套的for循环吗?

使用POST在curl命令中使用空格传递值

如何在 javascript (meteor.js) 中操作返回的 mongo 集合/游标?

用C语言循环嵌套语句编出一个三角形形状

循环嵌套-打印不定长特殊*号图形

使用传递值运行嵌套循环的惯用方式