Backbone View调用另一个View - 现在无法捕获点击事件

时间:2013-09-09 00:04:34

标签: javascript jquery backbone.js

我以为我读过你可以有一个视图调用另一个这样的视图:

查看1

window.View1 = Backbone.View.extend({

    initialize: function () {
        this.render();
    },

    render: function () {
        $(this.el).html(this.template(this.model.toJSON()));
        return this;
    },

    events: {
        "click .start" : "start"
    },

     start: function () {
       var StartView = new View2({model: this.model});
    }
})

查看2

window.View2 = Backbone.View.extend({

    initialize: function () {
        this.render();
    },

    events: {
        "click .nextstage"   : "nextstage"
    },

    nextstage: function () {
     alert('NEXT STAGE COMING UP');
    },

    render: function () {
        $("#content").html(this.template(this.model.toJSON()));
        return this;
    }
});

所以路由器为我设置了第一个视图,然后点击“开始”,它就会让我查看2.然后我想点击下一个阶段,并根据点击进行View 2方法触发....但它不会开火。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

View2呈现给#content,并且根据您的代码#content不是视图的元素(el)。由于events属性等待视图el内发生的事件,因此无效。

尝试

// View 1
start: function () {
    var StartView = new View2({model: this.model, el: $('#content')});
}

...

// View 2
render: function () {
    this.$el.html(this.template(this.model.toJSON()));
    return this;
}