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

时间:2015-09-08 18:41:42

标签: javascript html dust.js

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

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,然后根据其索引正确获取正确的课程标题。什么是正确的指数?

1 个答案:

答案 0 :(得分:2)

只是一个注意事项 - 你通过写一个全球帮手来重新发明轮子。 Dust包含一个global对象,作为Dust上下文的一部分,在参考查找期间自动访问。如果您有特殊需要访问无法传递到上下文的全局,那没关系,但这意味着您将完成额外的工作。

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

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

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