0

私はjavascriptテンプレート、つまりdustjsを学ぼうとしていますが、Googleでも答えられないほど基本的な問題に遭遇しました:)

これが最も単純な形式のコードです

      <button class="getData" onClick="clicker()">Get Data</button>

      <ul class="vodka">
      <script id="vodka" type="text/x-template">

       <li>{name}</li>

       </script>
       </ul>

Javascript

   window.addEventListener("load", clicker)

function clicker()
{
    getData();
}

function getData()
{
var data = {name:"Vodka", degree:97}
var source = $("#vodka").html();
var template = dust.compile(source, "vodkaTemplate");
dust.loadSource(template);
dust.render("vodkaTemplate", data, function(err, res){
            $(".vodka").html(res)
            console.log(res)
})
}

初期化中のテンプレートは完全にレンダリングされますが、ボタンをクリックするとエラーが発生します

キャッチされていない TypeError: 未定義のプロパティ 'substr' を読み取ることができません

私は何を間違っていますか?

4

1 に答える 1

0

ロード時にテンプレートを 1 回レンダリングします (スクリプトの 1 行目)。

テンプレートをレンダリングすると、 のコンテンツがレンダリングされたテンプレートに置き換え<ul class="vodka">られます。

ただし、何らかの理由で、テンプレート ソースもこのコンテナー内に配置しています。テンプレート ソースは、レンダリングされたコンテンツに置き換えられたため、最初のレンダリングで DOM から削除されます。したがって、テンプレートをもう一度レンダリングしようとすると、この行は次のように設定sourceされnullます。

var source = $("#vodka").html(); // #vodka does not exist anymore

nullまた、テンプレートにコンパイルしようとしているため、Dust エラーが発生します。

于 2015-02-23T18:44:45.650 に答える