バックボーンでのイベント伝播に関する奇妙な問題。ほとんどの人がイベントの伝播を停止する方法を尋ねますが、私は自分のイベントを伝播させるのに苦労しています!!
ここに 2 つの View オブジェクトがあります。Item ビューを含み、クリック イベントをリッスンして run() を呼び出す MainView:
var MainView = Backbone.View.extend({
...
events: {
"click .item": "run" // works only if no click event in Item
},
render: {
// Item View object children
},
run: function() {
//run :)
}
});
アイテム ビュー オブジェクトは、自身のクリック イベントをリッスンして動作のオン/オフを切り替えます。
var Item = Backbone.View.extend({
...
events: {
"click" : "toggle" // MainView click event works when this is removed
},
toggle: function() {
this.model.toggle();
}
});
Item.toggle() のクリック イベントがあるのに、Item がクリックされたときに MainView.run() が起動されないという問題があります。
ただし、Item.toggle () クリックイベントを削除すると、 MainView.run() が発生します。私の制御の及ばない範囲で、何らかの形でイベントの伝播が強制的に停止されたという結論に至りました。
どうすればこの問題を解決できますか? 明らかな何かが欠けていますか、それとも避けられないのでしょうか?
すべての提案と回答に感謝します:)。