【问题标题】:Handlebars Helper Function not returning multiple classes correctlyHandlebars Helper 函数未正确返回多个类
【发布时间】:2014-04-23 02:09:36
【问题描述】:

我有一个handlebars 辅助函数,它接收一个数值并需要将一组与该值关联的类返回到div 块或我的html 中的完整语句:

例如下面是sn-p:

Handlebars.registerHelper('text', function(num) {

    switch(num.toString()){
        case "3": 
            return "three double dice";
            break;

辅助函数有效。轻微问题。当它将它附加到我的 DOM 中的 div 时,由于某种原因,只有第一个单词作为我的类属性出现。即

HTML(DOM): <div class="two" double dice>

或者如果我重新安排我的退货声明:

HTML(DOM): <div class="double" two dice>

我试图返回整个 div 行。即

return '<div class="two double dice">'

以及在我的辅助函数中声明变量:

return "<div class="+ numClass + doubleClass + diceClass + ">"

甚至作为车把safeString:

return new Handlebars.SafeString("<div class="+ numClass + doubleClass + diceClass + ">");

请有人告诉我使用车把辅助函数返回多个类的正确方法是什么?赞赏。

更新(14 年 3 月 18 日):

包含模板。因此,这取决于您使用上面的辅助函数的哪个版本。

<template name="threeDice">
    <div class={{text Roll.dice1}}>
        *Content*
    </div>
</template>

<template name="threeDice">
    {{text Roll.dice1}}
        *Content*
    </div>
</template>

甚至:

<template name="threeDice">
    <div class= {{text Roll.dice1}} "double dice">
        *Content*
    </div>
</template>

如果我将辅助函数更改为仅返回“数字”字符串。

【问题讨论】:

  • 你如何从 html 调用助手?
  • 确实 - 您确实需要发布 html 模板代码才能进行诊断。
  • @Firo @richsilv。更新为包含模板。

标签: meteor return handlebars.js


【解决方案1】:

您的帮助代码似乎是正确的,因此很可能错误在于您如何调用它。对于帮手

Handlebars.registerHelper('classes', function(num) {
  if(num.toString() === '3') return 'three double dice';
});

正确的调用应该是

<div class="{{classes 3}}">

【讨论】:

  • 他的助手已经收到了所有三个类名,但只有第一个在类属性中,其他在外面,正如他指出的那样:&lt;div class="two" double dice&gt;
  • @Hubert OG 是正确的。我的模板调用在车把表达式之外没有额外的引号。当我包含引号时,即“{{text Roll.dice1}}”,所有 3 个名称都出现在类属性中,而不仅仅是名字。干杯。
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多