0

テンプレート内のすべてに日付ピッカーを適用してから、そのテンプレートを DOM に追加しようとしています。最初に ($.each を使用して) テンプレートを DOM に追加することでそれを行うことができましたが、現在は (Backbone を使用して) 責任を分離しており、その順序で行う必要があります。テンプレートのコンテキストで replaceWith を使用しようとしました:

$("input[type=date]", template).replaceWith(function() {
    $(this).datepicker({dateFormat : "yy-mm-dd"});
    return this.outerHTML;
});
return Mustache.render(template, this.model.toJson);

ただし、テンプレートは更新されず、replaceWith は更新された入力を含む配列のみを返します。答えは遠くないように感じますが、ここで立ち往生しています。日付ピッカーを適用する前または後に、Mustache を使用してテンプレートをレンダリングできますが、これは問題ではありません。

何か案は ?

4

1 に答える 1

2

Mustache.rendertemplateのテンプレートとデータに基づいて HTML を返しますthis.model.toJson(これは である必要がthis.model.toJSON()ありますか?)。すべての jQuery UI の要素と jQuery イベントは、HTML テキストではなく DOM 要素にバインドされているためtemplate、何にバインドしても問題ありません。

の出力にすべてをバインドする必要がありMustache.renderます。このようなもの:

render: function() {
    var template = ...
    var html = Mustache.render(template, this.model.toJSON());
    this.$el.append(html);
    this.$('input[type=date]').datepicker({dateFormat: 'yy-mm-dd'});
    return this;
}

そして、呼び出されたものは何でもrenderwould $something.append(v.render().el).

于 2012-11-15T17:31:00.750 に答える