深夜や疲れたときにやってしまう間違い
間違い
class View1 extends Backbone.View{
constructor(options?){
super(options);
}
render(){
//buttonAとbuttonBを生成する
var buttonA = new Backbone.View();
var buttonB = new BackBone.View();
this.append(buttonA.$el).append(buttonB.$el);
//buttonAイベント「submit」が呼ばれたらbuttonBをrenderしたい
this.listenTo(buttonA,'submit',buttonB.render);
return this;
}
}
buttonAのsubmitイベントが呼ばれたらbuttonB.renderを呼びたいんですが、うまくいかないです。
View1.renderが呼ばれます。
メソッドを呼ぶコンテキストがlistenToのオブジェクトに固定されるためのようです。
固定されているのが悪いのではなく、イベント購読を直接関係のない第三者に知らせても意味ないのでした。
正しい
class View1 extends Backbone.View{
constructor(options?){
super(options);
}
render(){
//buttonAとbuttonBを生成する
var buttonA = new Backbone.View();
var buttonB = new BackBone.View();
this.append(buttonA.$el).append(buttonB.$el);
//buttonAイベント「submit」が呼ばれたらbuttonBをrenderしたい
buttonB.listenTo(buttonA,'submit',buttonB.render);
return this;
}
}