2012-03-11 101 views
3

我需要建立一個jQuery模板,它有一個月的下拉列表和一個月的下拉日期。對於我來說,爲了讓我可以用{{each}}語法構建選項,我必須在每個JSON模型項目中包含一個月份列表和一個日期列表,這些值的值爲1到31。jQuery的模板可以有一個for循環

我已經看到了你怎麼可以添加的內部動態數組{{每個}}在另一個答案: Can I declare local/temp variables within a jQuery template?

我可能只用值定義裏面,一個陣列1至31但即使這樣,有點冗長。有沒有更好的方式在jQuery模板中做循環?

我大概可以找到一些日期對象來迭代日期特定的情況,但是有關非循環用例的非日期呢?

我想不使用外部的全局變量在模板體完全限定的迴路。使用全局變量,我可以輕鬆使用{{each}}。

回答

13

我已經找到如何將其他標籤添加到jQuery的模板。這是for標籤的定義。你的腳本引用jQuery和jquery.tmpl.js後補充一點:

(function ($) { 
$.extend(jQuery.tmpl.tag, { 
    "for": { 
     _default: {$2: "var i=1;i<=1;i++"}, 
     open: 'for ($2){', 
     close: '};' 
    } 
}); 
})(jQuery); 

感謝由羅埃爾克拉默斯的textarea標籤的樣本: http://blog.sterkwebwerk.nl/2010/12/15/custom-jquery-template-tags-1/

還查看jquery.tmpl源定義每個標籤的幫助很大。

默認值爲循環迭代1次。這裏是你如何定義一個模板體使用它:

<script id="TestTemplate" type="text/x-jQuery-tmpl"> 
    Day:<br/> 
    <select name="DayOfMonth"> 
     {{for(i=1;i<=31;i++)}} 
     <option value="${i}">${i}</option> 
     {{/for }} 
    </select> 
</script>​ 

這裏是一個的jsfiddle頁面,看看它在行動: http://jsfiddle.net/mjlang/qvzdV/

+0

擡起頭,那提琴似乎不工作了。 – 2016-01-25 02:57:57

+0

小提琴可能無法正常工作,因爲jQuery模板已過時。這個答案在這裏是爲了歷史目的。使用另一個模板引擎,如jsRender。 – 2016-07-31 14:22:19