如何在Handlebars Helper范围内获取父数据?

时间:2014-06-17 14:46:33

标签: handlebars.js parent

我尝试生成一个选项集,我可以在其中选择所选的选项,但是当我在上面的示例中嵌套帮助程序时,我无法访问timeSpent

这是我将数据发送到我的手柄模板的方式:

{
    feed : {
        foodMinutes : 90,
        timeSpent : 72
    }
}

这是我生成我的选择选项的地方,我认为有一种类似../timeSpent的方式来获取父数据,但它不起作用:

<select>
    {{#count feed.foodMinutes 1 0}}
    {{#equal ../timeSpent this}}
    <option value="{{this}}" selected>{{this}} minuti</option>
    {{else}}
    <option value="{{this}}">{{this}} minuti</option>
    {{/equal}}
    {{/count}}
</select>

这些是我的助手:

Handlebars.registerHelper("count", function(count, step, start, block) {
    var accum, steps, startFrom;
    accum = "";
    steps = step || 1;
    startFrom = start || 0;

    for(var i = startFrom; i < count; i += steps) {
        accum += block.fn(i);
    }
    return accum;
});

Handlebars.registerHelper("equal", function(lvalue, rvalue, options) {
    if (arguments.length < 3) {
        throw new Error("Handlebars Helper equal needs 2 parameters");
    }
    if (lvalue != rvalue) {
        return options.inverse(this);
    } else {
        return options.fn(this);
    }
});

那么如何在Handlebars Helper范围内获取父数据呢?

1 个答案:

答案 0 :(得分:0)

解决方案很简单,我使用../feed.timeSpent代替../timeSpent

<select>
    {{#count feed.foodMinutes 1 0}}
    {{#equal ../feed.timeSpent this}}
    <option value="{{this}}" selected>{{this}} minuti</option>
    {{else}}
    <option value="{{this}}">{{this}} minuti</option>
    {{/equal}}
    {{/count}}
</select>