5

私はバックボーンの初心者です。AbcView abc.js というビューがあります。

var AbcView = Backbone.View.extend({

    events: {
        "click" : "display",
    },
    display: function(e){
        console.log("hello");
        alert("click function");
    }
});

今、この abc.js を別の xyz.js ファイルに渡し、ListenTo を使用して別のビューで呼び出しています。

xyz.js

var xyzView = Backbone.View.extend({
    initialize: function(){
        var AbcView = new AbcView ();
        this.lisenTo(AbcView, "click",this.display);
    },
    render: function(){
        var html = this.template(AbcView);
        this.$el.html(html);
        return this;
    },
    display: function(e){
        console.log("parent hello");
        alert("parent display function");
    }
});

abc.js を使用すると、クリック イベントが正常にトリガーされます。しかし、xyz.js ではクリック イベントがトリガーされません。

これは listenTo を呼び出す正しい方法ですか。

4

2 に答える 2

4

View オブジェクトでは、DOM イベントは委任されません。

displayただし、これをエミュレートする場合は、ABCメソッドでイベントを手動で発行する必要があります。

display: function(e){

    // Trigger manually
    this.trigger("click");

    // Your usual code
    console.log("hello");
    alert("click function");
}

ベスト プラクティスとしては、「クリック」をよりわかりやすいイベント名に変更することをお勧めします。

于 2013-06-03T13:15:23.957 に答える
3

バックボーンのonとは、バックボーンとのlistenToイベントをリッスンすることを目的としています。ModelsCollections

http://backbonejs.org/#Events-catalog

これは理解しておくべき重要なことです。http://backbonejs.org/#View-delegateEventsで説明されているように、UI イベント バインディングとは異なります。

そうは言っても、サイモンが提案するようなものを使用して、2つを混在させることができます.

于 2013-06-03T14:28:19.473 に答える