您可以創建數據項自定義變量(在jQuery的相當於val
模板版本),如下所示:
{{for object.items itemVar='~val'}}
<span>{{:~val}}</span>
{{/for}}
目前名爲index
變量定製沒有的功能。 (可以想象使用語法{{for object.items itemVar='~val' indexVar='~i'}}
添加支持 - 但目前尚未實現)。
但是,如果你的理由爲希望提供#INDEX自定義變量,以使其可嵌套塊範圍,你可以自定義一個變量#index
在嵌套的標籤,如下所示:
{{for object.items itemVar='~val'}}
{{someNestedTag ~i=#index}}
<span data-index="{{:~i}}">{{:~val}}</span>
{{/someNestedTag}}
{{/for}}
現在採取的具體情況:
{{each (r, row) object.rows}}
{{each (c, col) object.cols}}
//work with both index and item knowing which one is which
{{/each}}
{{/each}}
這裏有一種方法做,在JsRender/JsViews:
{{for grid.rows ~grid=grid}}
{{for ~grid.cols ~rowIndex=#index ~row=#data}}
Row {{:~rowIndex}} {{:~row.rowProp}}
Col: {{:#index}} {{:colProp}}
{{/for}}
{{/for}}
如果你想使用數據鏈接,與JsViews,你反而會寫上:
{^{for grid.rows ~grid=grid}}
{^{for ~grid.cols ^~rowIndex=#index ~row=#data}}
Row {^{:~rowIndex}} {^{:~row.rowProp}}
Col: {^{:#index}} {^{:colProp}}
{{/for}}
{{/for}}
注意,在JsViews版本,因爲我要的〜rowIndex位置動態地通過更新數據綁定時前面的行被刪除,我使用語法^~rowIndex
- 這是一個選擇進入數據綁定。 ~rowIndex
將最初呈現正確,但不會更新行時刪除...
你可以看到它
而且出於利益考慮,也見這裏使用自定義網格視圖標籤:
附加說明:針對以下評論 「?爲什麼不與{{爲(指數,項目)對象}}語法繼續」
在JsRender你可以很容易地創建自定義標籤,和所有的標籤都有一個共同的結構:http://www.jsviews.com/#tags{{myTag爲arg0 ARG1 namedProp1 = XXX namedProp2 = YYY}} ... {{/ myTag}}使用命名參數(道具)和未命名參數(參數)。
所以itemVar =「〜VAL」任何標籤作品甚至是自定義標籤(不只是{{了...}}),使用一個名爲參數的標準語法,並允許您創建與模板塊(或塊)的數據項對應的上下文模板參數(幫助參數)。
另外在JsRender中,(表達式)語法已經具有arg的含義。例如,{{for(1 + 2)}} {{:}} {{/ for}}將輸出!
在jQuery的模板,還有自定義標籤的支持,以及(I,VAL)語法是特例,對於{{每個}}標籤。
在常見的情況是,你不需要自定義變量名和jQuery的模板語法:
{{each (i, val) object.items}}
<span data-index="${i}">${val}</span>
{{/each}}
是(我會說)略高於JsRender一個更復雜的:
{{for object.items}}
<span data-index="{{:#index}}">{{:}}</span>
{{/for}}
謝謝鮑里斯!在附註中,爲什麼不繼續使用'{{for(index,item)對象}}'語法?我認爲寫'itemVar ='〜val''這樣的東西並不像使用jQuery模板那麼簡單,更不用說前面的'〜'字符。 –
我在語法上添加了背景,對我上面的答案... – BorisMoore
我已經更新了我的答案,以便清楚我後面的內容 –