2012-03-08 12 views
0

私はバックボーンカレンダーを持っており、毎日さまざまなオプションがあります。ユーザーは一度に1日しか見ることができません。バックボーンビューの子をバインド解除する

したがって、ユーザーが翌日または前日に行くことを選択した場合は、MyApp.Views.ShowDayに電話してその日を再描画します。

ShowDayビューは、いくつかのサブビューMyApp.Views.Hoursを呼び出します。 私は新しい日を作成するときに古い日から時間をバインド解除する必要がありますが、それはエラーを引き起こすだけです。

私はそれが

 
MyApp.Views.Showday = Backbone.View.extend({ 
    events: { 
      "click div.change_day":"change_day" 
    }, 

    change_day: function(){ 
     MyApp.Views.Hours.unbind(); //I've tried off(), off, remove() as well 

    } 

}); 

でやろうとしている方法は、これは子供のバインドを解除する方法はありませんか?

答えて

1

イベントからイベントハンドラを明示的にバインド解除する必要があります。 bindTounbindFromAll関数に特定の注意を払って、別のSOの質問にこの答えを参照してください:

Backbone.js : repopulate or recreate the view?

+0

ありがとうDerick、私はあなたのバインディングテクニックに関して実際にあなたの記事を読んでいましたが、私は何かを望んでいましたより簡単です。今私はこれを試してみます。 – pedalpete

+0

残念ながら、もっと簡単なことはありません。バックボーンはこれに対して手を加えずにアプローチし、自分自身を足で撃ったり、余分なコードを自分で書くことができます。 FWIW:https://github.com/derickbailey/backbone.marionette/blob/master/backbone.marionette.js#L463-488そこからコードをコピー&ペーストして_.extendを使用して自分のものにミックスします。 :) –

0

は(MyApp.Views.Hours.removeを試してみてください)。これにより、ビューとその要素がdomから削除され、プロセス内のすべてのイベントハンドラが破棄されます。

+0

私は自分の入れ子を書いた方法のせいかもしれませんが、これはまた私がそれを取り除いた後に別の子供を加えることを許さなかったのです。私は早くそれを試みた。 – pedalpete

関連する問題