2011-08-09 151 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}} –