1

なぜこれが機能するのかを理解しようとしています:

var TestView = Backbone.View.extend({
    views: {},

    initialize: function(){
        this.bind('transistion:complete', this.onPageLoaded);

    },

    onPageLoaded: function(){
        alert("works!");
    }
});

var v = new TestView();
v.trigger('transition:complete');

しかし、これは機能しません:

var TestView = Backbone.View.extend({
    views: {},

    events:{
        'transition:complete': 'onPageLoaded'
    },

    onPageLoaded: function(){
        alert("works!");
    }
});

var v = new TestView();
v.trigger('transition:complete');

ビューのイベント オブジェクト内からカスタム イベントをトリガーできるようにした方がよいでしょう。とにかくこれを機能させることができますか?

4

2 に答える 2

6

バックボーン イベント ハッシュは、ビューではなく DOM に関連付けられます。

View 要素にトリガーを実行する方法を確認します。

var TestView = Backbone.View.extend({

    events:{
        'transition:complete': 'onPageLoaded'
    },

    onPageLoaded: function(){
        alert("works!");
    }
});

var v = new TestView();
v.$el.trigger('transition:complete');

ただし、カスタム イベントを要素にバインドする必要がない場合は、最初のコードで問題ありません。次のように bind を on に置き換えるだけです。

this.on('transistion:complete', this.onPageLoaded);
于 2012-08-28T14:47:00.750 に答える