2014-05-12 34 views
0

我曾經能夠將格式化文本中的JSRender模板存儲在html文件中並存儲在服務器上。然後我使用$ .get來檢索我的模板並進行渲染。JSRender:行爲在註冊命名模板時發生了變化?

我的helper方法類似: Store a jsRender template in a separate js file

function LoadJSRenderTemplate(container, templateUrl, myArray) { 
$.when($.get(templateUrl)) 
.done(function(tmplHtml) { 
    $.templates({ MyTemplate: tmplHtml }); 
    container.html($.render.MyTemplate(myArray)); 
    }); 
} 

我的模板如下所示:

<div class="ResultTableRow"> 
    <span>{{>Distributor}}</span> 
    {{if FuelType}} 
    <span> 
     {{for FuelType}} 
      {{>#data}}<br /> 
     {{/for}} 
    </span> 
    {{/if}} 
</div> 

今天我開始了一個項目並使用最新的jsrender突然同樣的方法停止工作... urrr。現在,我必須將我易於閱讀的模板壓縮到這個http://www.jsviews.com/#samples/jsr/composition/remote-tmpl示例後面的單行js文件中。儘管它很有用,但我討厭不得不在閱讀我習慣的縮進模板格式時感到輕鬆。

爲什麼?什麼改變了?

回答

1

也能正常工作對我來說:

<!DOCTYPE html> 
<html> 
<head> 
    <script src="http://code.jquery.com/jquery.js" type="text/javascript"></script> 
    <script src="http://www.jsviews.com/download/jsviews.js"></script> 
</head> 

<body> 
    <div id="container"></div> 

    <script type="text/javascript"> 
     var myArray = [ 
      {Distributor: "a", FuelType:"qq"}, 
      {Distributor: "b"}, 
      {Distributor: "c", FuelType:"rr"} 
     ]; 

     $.get("file.html") 
      .done(function(tmplHtml) { 
       $.templates({ MyTemplate: tmplHtml }); 
       $("#container").html($.render.MyTemplate(myArray)); 
      }); 
    </script> 
</body> 

</html> 

file.html

<div class="ResultTableRow"> 
    <span>{{>Distributor}}</span> 
    {{if FuelType}} 
    <span> 
     {{>FuelType}}<br /> 
    </span> 
    {{/if}} 
</div> 

(我稍微簡化您的模板)。

Store a jsRender template in a separate js file見 - 萬一有使用get的問題()VS阿賈克斯()輸入 「文本」

+0

大加讚賞。最後,我發現這是另一段JavaScript代碼中斷了渲染並導致了混淆。 – MagicGuru