【问题标题】:I cannot get Handlebars helpers to work with arguments in meteorjs我无法让 Handlebars 助手在meteorjs 中处理参数
【发布时间】:2013-07-21 08:09:30
【问题描述】:

我正在尝试在 MeteorJS 中使用带有参数的简单车把助手。

让我给你看一个例子:

{{#myList data className="myClassName"}}
  {{name}}
{{/myList}}

帮助器是这样声明的:

Handlebars.registerHelper('myList', function(context, options) {
  if (context && context.length){
    var className = options.hash.className || "", 
       ret = "<ul class='"+ className +"'>";

    for(var i=0, j=context.length; i<j; i++) {
      ret = ret + options.fn(context[i]);
    }

    return ret + "</ul>";
  }
});

但是属性“hash”总是一个空数组。

如果我测试这样一个版本:

{{#myList data "myClassName"}}
  {{name}}
{{/myList}}

回调方法从不接收第二个参数。

是不是我做错了什么?

【问题讨论】:

    标签: javascript meteor handlebars.js


    【解决方案1】:

    来自meteor/handlebars:

    在 Meteor 中,方块助手不采用任意位置和关键字 像非块助手这样的参数。相反,参数被处理 一起作为嵌套的 Handlebars 助手调用表达式。

    但你应该能够传递only关键字参数:

    确切的规则是块助手总是被调用,要么没有 论据;一个位置参数(并且没有关键字参数);或仅 关键字参数。任何非关键字参数的存在,例如 foo 在前面的示例中,导致所有以下位置和关键字 要传递给 foo 的参数(如果它是一个函数,否则 吞下)。否则,如果只有关键字参数,它们是 传递给助手,因此您可以定义一个块助手,它接受任何 通过给参数命名的参数数量:{{#helper x=1 y=2 z=3}}...{{/helper}}。

    这应该可行:

    {{#myList myData=data className="myClassName"}}
      {{name}}
    {{/myList}}
    

    【讨论】:

    • 不是真的!这是否意味着这种方式不可能,但我们可以用另一种方式来做?怎么样?
    • 测试和批准!谢谢!
    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多