有没有更简洁的方法将附加数据传播到嵌套模板?

时间:2011-07-26 15:31:40

标签: jquery jquery-templates

为了在我的模板中提供一些“全局值”,我在调用tmpl时指定'options'参数:

var globals = { aProperty: "foo" };

$("#tcontent").tmpl(data, 
      { globals: globals }) // <-- options
.appendTo("#content");

然后,我可以像这样访问globals的属性:

${$item.globals.aProperty}

然后,每当我从模板中调用另一个模板时,我需要执行以下操作,以确保嵌套模板中再次提供globals

{{tmpl(nestedValue, {globals: $item.globals} ) "#tnestedtemplate"}}

这有点儿蠢事。是否有其他更清洁的机制可以在我的模板中访问这些全局值?

1 个答案:

答案 0 :(得分:1)

如果您为JavaScript命名空间,则可以添加TemplateGlobals或类似命名空间:

Globals = {};
Globals.TemplateProperties = {};
Globals.TemplateProperties.TestProperty = "Test";

现在,当您致电globals时,无需传递.tmpl对象。您可以直接访问这些属性。显而易见的缺点是,现在这些属性可用于所有JS代码。

${Globals.TemplateProperties.TestProperty}

示例: http://jsfiddle.net/andrewwhitaker/CqVxS/