私は、その中に別のビュー(子ビュー)を持つビュー(親と呼ぶ)を持っています。親ビューには、「コンテキストメニュー」イベントを使用する要素があります(右クリックすると、一連のメニューオプションが表示されます)。ユーザーがメニューから項目を選択すると、コールバックが発生します。そこから、子ビューでイベントをトリガーします。ここに私のトリガーである:私の子ビューの初期化関数でBackbone.js ListenToOnceが2回呼び出される
that.trigger("editFileFolder", {fileType: fileType});
、私はこれを持っている:
this.listenToOnce(this.options.parent,'editFileFolder', this.editFileObjectEvent);
editFileObjectEvent機能を作成する別のビュー(いくつかのフィールドを持つダイアログ、キャンセルボタンを呼び出し、保存ボタン)。ユーザーがキャンセルをクリックすると、すべて正常に動作します。使用が保存ボタンをクリックすると、ビューはajax呼び出しを行い、サーバーに保存してダイアログを閉じます。しかし、次にユーザーが右クリックして同じメニュー項目を選択すると、editFileObjectEventが2回呼び出されます(その結果、ダイアログは親ビューに2回追加されます)。
誰もがなぜ2回呼び出されているのか、これを解決する方法を説明できますか?特定のコードを表示したい場合は、お知らせください。追加することができます。たくさんあるので、私はその質問を圧倒したくありません。私はthis.listenToOnce
を呼び出す関数が2回呼び出され考える
おかげ
私は 'this.listenToOnce'が2回呼び出され – andlrc
うーん呼び出す機能を考えて、あなたが正しいようです。このリスナーがすでに配置されているかどうかを判断する方法はありますか? – jason
パブリックAPIだとは思いません。しかし、あなたは 'this._listeningTo'を見ることができます – andlrc