LoginSignup
14
15

More than 5 years have passed since last update.

間違ったlistenToの使い方

Last updated at Posted at 2013-09-11

深夜や疲れたときにやってしまう間違い

間違い
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;
    }
}
14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15