如何将变量传递给灰尘助手功能键?

How to pass a variable into a dust helper function key?

我正在创建一个 dust 辅助函数,它将访问保存我的文本的全局 JS object。我还需要能够从 dust 辅助函数将使用的模型中传入一个变量。我的除尘助手看起来像...

var global = {
    lesson_titles: [
        "Lesson 1",
        "Lesson 2",
        "Lesson 3"
    ],
    lesson1: {
        a: "This is lesson1.a"
    }
};

dust.helpers.global = function ( chunk, context, bodies, params ) { 
    var key = params.key;
    var parts = key.split(".");
    var current = global;
    for(var i = 0; i < parts.length; i++) {
        current = current[parts[i]];
    }
    chunk.write(current);
};

我的灰尘文件中的预期用途类似于...

{@global key="lesson1.a"}

这工作正常,但对于我传入的模型之一,我有一个名为 "lesson_index" 的变量。我希望能够在密钥中使用该变量以便能够正确访问内容。例如...

{@global key="lesson_titles.{lesson_index}"}

lesson_index 将为 0、1 或 2,然后会根据其索引正确获取正确的课程标题。正确的索引是什么?

请注意 -- 您正在通过编写一个全局助手来重新发明轮子。 Dust 包含一个 global 对象作为 Dust 上下文的一部分,在引用查找期间自动访问该对象。如果您有特定需要访问无法传递到上下文中的全局变量,那没关系,但这意味着您需要做额外的工作。

要解析字符串中的任何引用,您可以使用特殊的上下文函数 context.resolve。您只需更改一行代码:

var key = context.resolve(params.key);

此函数将使用您当前的上下文来呈现 params.key 中的字符串,因此 key 将计算为 lesson_titles.1