dustjs渲染客户端不工作

时间:2015-02-06 14:12:09

标签: dust.js

在Expressjs中使用dustjs模板引擎4.当用户填写表单并使用xhr单击搜索按钮时,想要在客户端呈现模板。到xhr调用json时,一切似乎都很好,但是dust.render没有渲染结果。

以下是页面上的灰尘模板:


    <script id="result-template">
    // extra table tags removed for brevity
    {#search_results}
      {fname}
      {lname}
      {accountId}
      {email}
      {status}
     {/search_results}
    </script>
    <div id="output">

下面是外部js文件中的js / jquery,它向服务器端发出xhr调用。在成功回调中,我试图从调用中呈现结果,基本上用户填写搜索表单并单击提交:

$(document).ready(function () {
  $('#main').on('click', '#search-btn', function (e) {
   e.preventDefault();
   $.ajax({
     url: '/support/search/ah',
     type: "post",
     headers: {token: sessionStorage.getItem('somekey')},
     data: {'phone': $('#mobile').val(),
            'email': $('#email').val(),
            'fname': $('#fname').val(),
            'lname': $('#lname').val()
            },
    success: function (data, textStatus, request) {
      var source   = $("#result-template").html();
      var compiled = dust.compile(source, "intro");
      dust.loadSource(compiled);
      dust.render("intro", data, function(err, out) {
        $("#output").html(out);
        $('#search-result').dataTable();
      });
   },
   error: function (data, textStatus, request) {
   // handle error
   })  
})

xhr通话成功,我可以看到&#39;数据&#39;变量包含带有值的json,但是,我无法使用dust.render渲染它们,并且在页面加载或结果返回时没有观察到js错误。

以下是xhr调用的json结果:

{"search_results":[{"fname":"Duke", "lname":"Wellington","accountId":"007","email":"duke_wellington","status":"Breathing"}]};

我尝试使用atakdubya.github.io替换其数组示例的相同json结果的相同模板,它工作正常。

如果有人能够指出我做错了什么,那将非常感激。

1 个答案:

答案 0 :(得分:1)

根据您的浏览器的不同,您不能拥有script标签而不会type,或者它将被解释为Javascript,并且Dust无效Javascript。

尝试将type="text/dust"添加到您的script代码中。这个JSFiddle适合我。

http://jsfiddle.net/Lutr4h2e/1/