1

これは私のプロジェクト アーキテクチャの問題です。これは私の最初のバックボーン プロジェクトであり、おそらく何か間違ったことをしたのでしょう。

私が持っているルートコールバックのすべてのプロジェクトで:

myroute: function() {
    this.currentView = new MyCustomView();
},

mysecondroute: function() {
    this.currentView = new MySecondView()
},
//...

したがって、すべてのルート コールバックで、いくつかのビューをインスタンス化します。このビューには、render メソッドを呼び出す initialize メソッドがあります。events: {}同じビューがインスタンス化されるたびに、すべてのビュー イベント (で宣言されている) が「バインド」されることを除いて、これは機能します。そのため、同じルートに 2 回アクセスすると、このルートに対応するビューのイベントが 2 回発生します...

おそらく、すべてのルート呼び出しで新しいビューをインスタンス化する必要がありますが、どうすればこれを行うことができますか? つまり、基準は何ですか?たぶん、現在のビューを何らかの形でアンロードする必要があります-これを行う方法はありますか?

4

1 に答える 1

0

ビューを閉じるには、その時点ですべてのイベントのバインドを解除するメソッドを追加する必要があると思います

このような

close : function () {
   //your code to clean everything before closing the view
   this.remove();
   this.unbind();
}

次回ビューが呼び出されると、ビューの初期化中にイベントが追加されます。そのため、イベントが2回呼び出されました。initialize メソッドは、イベントを .el 要素にバインドします。ある時点でそれらをアンバインドする必要があります。

于 2013-02-20T20:19:48.187 に答える