2011-07-20 10 views
9

私は親/子供を簡潔にするために2つのビューを持っています。子供はトリガーを使ってイベントをスローしています。私は親のハンドラでそれを見ていない。以下は有効ですか?ChildboneからのBackbone.JSカスタムイベント

var parent = Backbone.View.extend({ 
    events: { "childevent": "run" }, 
    run: function(e) { 
     console.log(e); 
    }, 
    render: function() { /* render the child here */ } 
}); 

var child = Backbone.View.extend({ 
    someAction: function() { this.trigger('childevent'); } 
}); 

答えて

18

それがわかりました! $(this.el).trigger('childevent');が動作します。

+0

あなたのソリューションを投稿していただきありがとうございます! – Kirk

+0

$()ラッパーは私が見つからなかったものです。ありがとう! – gthmb

+3

これを試すこともできます。キャッシュされたjQueryプロパティ – Gus

2

events: { "childevent": "run" }ではありませんか?実際の無名関数にコード内のこの場所でアクセスする方法はありません。

+0

私は実際にそれを持っていましたが、まだ動作しません、私はちょうどここに間違って入力しました。良いキャッチ。 –

2

$(this.el)で参照を再計算するのではなく、ビューのノードへのjQuery参照をthis.$elプロパティに格納することで、パフォーマンスをいくつか使い分けることができます。

後半に明らかに
// use "this.$el.trigger()" to refer to jQuery's object 
this.$el.trigger('childevent'); 
1

が、これに出くわす他の誰のために:

ビューのイベントプロパティは、自動結合HTML DOMの景色エルまたは$ EL素子内のコンポーネントからのイベント、とのためであります構文は、ペアのキーとしてUIイベントとセレクタの両方が含まれます。

イベント:{「#someButtonをクリックして」、「はclickHandler」}

をあなたがこれを使用する他のモデルやビューからのイベントに聞くに。 listenTo(ターゲット、.....)

関連する問題