在jquery模板中定义变量?

时间:2011-08-09 18:15:43

标签: jquery jquery-templates

我有一个jquery模板,我必须像这样组合一些变量:

{{= year}}-{{= month}}-{{= day}}-{{= hour}}

我来自jqote模板,你可以在模板中使用javascript。这可能在jquery模板中吗?我在这个问题上找不到任何帮助。感谢。

我也使用奇怪的语法,因为groovy不喜欢$ {}。

<script id="mainTemplate" type="text/x-jquery-tmpl">
<ul>        
    {{each(i, wrapSpec) data}}          

    <li><a href="#pkgLineTabs_{{= wrapSpec.wrapSpecId}}" id="{{= wrapSpecId}}">{{= wrapSpec.wrapSpec2.pkgLineId.pkgLineTree.treeId.name}} {{= wrapSpec.shortname}} </a></li>

    {{/each}}
</ul>

{{each(i, wrapSpec) data}}

<div id="pkgLineTabs_{{= wrapSpec.wrapSpecId}}" style="font-size:12px" class="reportTable display {{= wrapSpec.wrapSpec2.pkgLineId.hash}}" title="{{= wrapSpec.wrapSpec2.pkgLineId.hash}}" >    

    {{tmpl(wrapSpec.report) "#dayTemplate"}}

</div>  

{{/each}}

在jqote中我可以说var pkgLineId = wrapSpec.wrapSpec2.pkgLineId。

所以不要说wrapspec.wrapSpec2.pkgLineId.hash我可以放pkgLineId.hash。

1 个答案:

答案 0 :(得分:2)

您可以使用 $ {} 模板标记在jQuery模板中嵌入函数或表达式。

http://api.jquery.com/template-tag-equal/

您可以通过窗口对象将全局变量传递给模板:

var year = 2011;

var myTemplate = $("<div><b>Year: ${year}</b></div>").template();
$.tmpl(myTemplate, window).appendTo("#myDiv");

或者:

var currentDate = {'year' : 2011};

var myTemplate = $("<div><b>Year: ${year}</b></div>").template();
$.tmpl(myTemplate, currentDate).appendTo("#myDiv");

这是一个完成我认为你想做的事情的jsfiddle:http://jsfiddle.net/GTjXz/1/

编辑:jsfiddle,它在模板中的$ item对象上动态声明新属性:http://jsfiddle.net/GTjXz/2/