{{#each}}迭代器中的把手助手无法正常工作

时间:2015-09-22 21:22:02

标签: marionette handlebars.js

我制作了一个名为" $"的模板助手。在我的木偶装置中

templateHelpers:function(){
    return jQuery.extend(this,{
        '$':function (text){
            return Handlebars.compile('{{'+text+'}}')(this);
        }
    });
},

这允许我这样做

{{$ collection.display}}

将解析collection.display,通常是名称,但可能是其他字段名称,如service_id,然后我的处理程序将解决该问题。 所以我有间接,比打字便宜

{{{{collection.display}}}}

一切都好。唯一的障碍是,当我把它放在{{#each items}}循环中时,

{{#each items}}
                <option value="{{this.id}}">{{$ ../collection.display}} </option>
{{/each}}

它爆炸了

Error: Missing helper: "$"

请注意,当我在$ {$ any}}内部失败时,我在$之后放置的内容无关紧要,帮助器就不存在了。

1 个答案:

答案 0 :(得分:1)

这可能是一个异步性问题。在应用处理程序之前,迭代器块的主体似乎正在编译。 无论如何,如果我只是去

Handlebars.registerHelper('$', function (text){
    return Handlebars.compile('{{'+text+'}}')(this);
});

在我开始宣布任何木偶视图之前,它是有效的,所以不确定这是否算作牵线木偶,车把或我当中的错误。
这是Handlebar helper inside {{#each}}

的副本