listenTo在backbone.js的另一个视图中使用时不工作

listenTo在backbone.js的另一个视图中使用时不工作,backbone.js,Backbone.js,我是个新手,我有一个观点叫AbcView abc.js 现在我将这个abc.js传递给另一个xyz.js文件,并使用ListenTo在另一个视图中调用它 xyz.js var xyzView = Backbone.View.extend({ initialize: function(){ var AbcView = new AbcView (); this.lisenTo(AbcView, "click",this.display); },

我是个新手,我有一个观点叫AbcView abc.js

现在我将这个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的正确方法吗

DOM事件不会委派给视图对象

但是,如果要模拟此情况,则必须在ABC
display
方法中手动发出事件:

display: function(e){

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

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

根据最佳实践,我可能会将“click”重命名为更具描述性的事件名称。

主干
on
listenTo
用于收听主干
模型和
集合上的事件

这是一件需要理解的重要事情。它与UI事件绑定不同,如中所述

也就是说,你可以使用Simon建议的东西来混合两者

display: function(e){

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

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