我正在创建一个灰尘辅助函数,它将访问一个包含我的文本的全局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,然后根据其索引正确获取正确的课程标题。什么是正确的指数?
答案 0 :(得分:2)
只是一个注意事项 - 你通过写一个全球帮手来重新发明轮子。 Dust包含一个global
对象,作为Dust上下文的一部分,在参考查找期间自动访问。如果您有特殊需要访问无法传递到上下文的全局,那没关系,但这意味着您将完成额外的工作。
要解析字符串中的任何引用,可以使用特殊上下文函数context.resolve
。您只需要更改代码的一行:
var key = context.resolve(params.key);
此函数将使用您当前的上下文在params.key
中呈现字符串,因此key
将评估为lesson_titles.1
。