2015-06-12 52 views
0

測試結果,我有以下模板試圖在JsRender使用allowCode與{{* window.counter ++}},並使用布爾測試

<script type="text/x-widget-template" id="genericRowValues"> 
     {{* window.counter = 0}} 
     {{props}} 
      {{* console.log(counter == 0)}} 
      {{if counter == 0}} 
       {{* console.log("WHY YOU NO WORK!")}} 
       <div class="row"> 
      {{/if}} 
      <div class="col-lg-4"> 
       <div class="input-group" style="margin-bottom:5px;"> 
        <b>{{>key}}</b> 
        <div class="well well-sm"> 
         {{>prop}} 
        </div> 
       </div> 
      </div> 
      {{if counter == 4}} 
       {{* counter = 0}} 
       </div> 
      {{/if}} 
      {{* counter++ }} 
     {{/props}} 
    </script> 

我通過創建我的模板。

var templateSource = $.templates(
     templateName, 
     { 
      markup: '#' + templateName, 
      allowCode: true 
     } 
    ); 

    for (var i = 0; i < dataSource.length; i++) { 
     var template = templateSource.render(dataSource[i]); 

我也調用這個頁面加載。

$.views.settings.allowCode = true; 

的聲明:

{{if counter == 0}} 

和:

{{if counter == 4}} 

不工作,我希望它。我在這裏做錯了什麼?

我的控制檯日誌顯示比較結果爲真。但條件支架內的日誌永遠不會被擊中。 :(

我的記錄也表明,反被正確遞增。

它可能是一些昭然若揭,但我不能看到它:(。

回答

1

要修改window.counter,但在你的布爾測試你是不是在看window.counter {{:counter}}{{if counter}}的價值正在訪問當前數據項的計數器屬性的值。 - 它是對象{key: ..., prop:...},因爲你是在{{props ...}}上下文

基本上ÿ ou不能從常規標籤訪問全球變量 - 只能從{{*...}}{{*:...}}

因此,您可以執行諸如{{* if (window.counter==4) { }} ... {{* } }}之類的操作。

請參閱http://www.jsviews.com/#allowcodetag

+0

:D乾杯!不能相信我沒有看到。 – Spaceman