backbone.js - 在backbone.js的另一个 View 中使用时listenTo不起作用

标签 backbone.js

我是主干的新手。我有一个名为 AbcView 的 View
abc.js

var AbcView = Backbone.View.extend({

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

现在我将这个 abc.js 传递给另一个 xyz.js 文件并使用 ListenTo 在另一个 View 中调用它。
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 事件不委托(delegate)给 View 对象。

如果你想模拟这个,你必须在 ABC display 中手动发出事件。方法:

display: function(e){

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

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

就最佳实践而言,我可能会将“点击”重命名为更具描述性的事件名称。

关于backbone.js - 在backbone.js的另一个 View 中使用时listenTo不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16897154/

相关文章:

backbone.js - 使用 Devise 3 和 Backbone 进行用户身份验证的最佳方法是什么?

javascript - 如何在backbone.js 模型中添加私有(private)函数?

jquery - 将集合更改绑定(bind)到 View 渲染

javascript - Backbone.Model 保存——返回模型的子项是数组而不是 Backbone.Collection。

javascript - Backbone.js 刷新 View 而不重新加载页面

javascript - backbone.js 查看事件未触发

javascript - backbone.js 复杂模型

javascript - 为什么这个 Backbone View 没有初始化?

多个字段上的 JavaScript Backbone 集合排序

javascript - 在backbonejs中获取初始数据之前Ajax throbber的设计模式