2011-08-09 87 views
0

我有一个jQuery的模板,在那里我有一些变量结合在一起,像这样:在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我只能说无功pkgLineId = wrapSpec.wrapSpec2.pkgLineId。

因此,我可以只是把pkgLineId.hash,而不是说wrapspec.wrapSpec2.pkgLineId.hash。

回答

2

您可以使用$ {} Template标签将函数或表达式嵌入到jQuery模板中。

var year = 2011; 

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

或者:

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

您可以通过窗口对象的方式传递全局变量给模板

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/

+0

嘿人感谢您的帮助,但这不会与我的用例一起工作。数据是一个数组。检查我的编辑。 –

+0

@Drew H - 看看这篇文章:http://stackoverflow.com/questions/5056679/defining-new-variable-within-jquery-template – RoccoC5

+0

谢谢。我觉得自己像个白痴,因为我检查了页面,但我这样做: {{VAR pkgLineId = {{= wrapSpec.wrapSpec2.pkgLineId}}}} 取而代之的是 {{VAR pkgLineId = wrapSpec.wrapSpec2 .pkgLineId}} –