JSRender:在注册命名模板时行为发生了变化?

时间:2014-05-12 12:57:38

标签: jsrender

我以前能够将格式化文本中的JSRender模板存储在html文件中并存储在服务器上。然后我使用$ .get来检索我的模板并进行渲染。

我的助手方法类似于: 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 个答案:

答案 0 :(得分: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 ajax()类型“text”存在问题