2012-01-11 5 views
6

私はフレームワークとしてBackbone.jsを使用しています。私の見解では、いくつかの小さな画像(ゴミ箱、アイコンなど)があります。ビューが再レンダリングされると、これらのイメージが点滅します。バックボーン・ビューをレンダリングするときにイメージが点滅しないようにするにはどうすればよいですか?

私はフラッシュしたくないものすべてについて新しいビューを作成し、レンダリングをトリガーしないことで、より大きなイメージでこれを解決しました。しかし私は、私の意見を崩壊させることなく、これを行う別の方法があるかどうか疑問に思っていましたか?

これは私がで私の意見をレンダリングしています一般的な形式である:私のテンプレートが

<script type="text/template" id="view-template"> 
<% 
    print('Content content - <img src="images/delete.gif" class="delete">'); 
%> 
</script> 
ように見えるかもしれません

var newView = new PopupItemImgView({model: someModel}); 
     $('#styleimage').append(newView.render().el); 

:によって

window.SomeView = Backbone.View.extend({ 
    initialize: function() {     
     this.model.bind('change', this.render, this); 
     this.template = _.template($('#view-template').html()); 
    }, 
    render: function(){ 
     var renderedContent = this.template(this.model.toJSON()); 
     $(this.el).html(renderedContent); 
     return this; 
    }, 
    events: { 'click .delete' : delete }, 
    delete: function(ev){ 
     //do delete stuff here 
    }, 

}); 

そして、私はdiv要素に取り付けます

+0

コードのサンプルを提供できます – Paul

+0

再レンダリング方法に関するコードを少し表示できますか?私の仮定は、イメージを含むあなたのhtmlをdomから削除してから、それらを再追加することです。 – Mike

+0

マイク、そうですね、私はチュートリアルからそれをやることを学びました。私はいくつかのコードを添付しました。 –

答えて

1

changeイベントをrenderメソッドにバインドする代わりに、changeからonChangeに機能します。その後、onChangeハンドラ内で、更新する必要があるものを正確に把握し、それ以外のものはそのまま残すことができます。

私はコレクションのビューを作成するときにこのアプローチを使用しました。単一の要素が変更されたときにリスト全体を再レンダリングすることは望ましくありませんでした。代わりに、要素が最初に挿入された時点でレンダリングした後、必要に応じて特定の変更イベントを処理しました。

関連する問題