相关疑难解决方法(0)

Backbone.View:delegateEvents不会将事件重新绑定到子视图

我已经将这个问题分解为可能的最小例子(即,它只是为了证明问题,而不是必然代表一个真实的场景).

假设我有一个父视图(这里是"MainView"),它包含一个子视图(这里是"SubView").如果,在任何时候,我需要重新渲染父视图(从而重新呈现子视图),我在子视图中丢失事件绑定,尽管调用delegateEvents.

可以在这里找到一个jsfiddle:http://jsfiddle.net/ya87u/1/

这是完整的代码:

var MainView = Backbone.View.extend({
    tagName : "div",
    initialize : function() {
        this.subView = new SubView();
    },
    render : function() {
        this.$el.html(this.subView.render().$el); // .html() breaks binds
        this.subView.delegateEvents(); // this re-establishes them
        return this;
    }
});

var SubView = Backbone.View.extend({
    tagName : "div",
    events : {
        "click .button1" : "onButtonPress"
    },
    onButtonPress : function() {
        alert("Button pressed");
    },
    render : function() {
        var html = "<button class='button1'>Button1</button>";
        this.$el.html(html);
        return this;
    }
});

var …
Run Code Online (Sandbox Code Playgroud)

javascript jquery backbone.js

5
推荐指数
1
解决办法
2890
查看次数

标签 统计

backbone.js ×1

javascript ×1

jquery ×1