1

アンダースコア テンプレートを使用してページをレンダリングします。私が使用すると問題が始まります:

$(function(){
   console.log($('.input-placeholder'));
});

時々それらにアクセスできますが、ドキュメントの読み込み後にページがレンダリングされるため、機能しないこともあります。

だから私は使う

$('#application').html(_.template('<div class="input-placeholder"></div>', {}));

また、入力プレースホルダーが見つかったことをコンソールに出力することがありますが、常にではありません。テンプレートがロードされた後に $(function(){}) がトリガーされるようにするにはどうすればよいですか。

ありがとう

4

2 に答える 2

1

http://lostechies.com/derickbailey/2011/11/09/backbone-js-object-literals-views-events-jquery-and-el/

render メソッドでテンプレートを読み取ります。


Backbone.View.extend({
  render: function(){
    var html = _.template($("#my-template"));
    this.$el.html(html);
  }
});

そして、DOMReady イベントが発生するまで待ってからアプリを起動し、ビュー インスタンスを作成してレンダリングします。

于 2012-06-02T20:11:34.347 に答える
0

何を達成しようとしているのかはわかりませんが、Derick のソリューションに代わるこの方法を試すことができます。

Backbone.View.extend({
    el: document.createElement('div'),
    template: null,
    render: function(){
        if(this.template === null){
            this.template = _.template($('#my-template'));
        }
        this.$el.html(this.template({}));
    }
});

その場合は、次のことに注意してください。

var something = _.template('<div><%= haha %></div>');

somethingデータを渡すと html を返す関数になるため、毎回再コンパイルする必要はありません。

于 2012-06-04T00:46:09.040 に答える