【问题标题】:backbone.hammer.js, event is not fired second time骨干.hammer.js,事件不会第二次触发
【发布时间】:2013-11-03 11:24:09
【问题描述】:

以下按钮单击仅在页面加载时有效,在路由后无效。 1) 显示默认页面 2)单击“单击此处”按钮(这有效) 3)单击其他按钮进行路由(无需重新加载页面,清除内容,并创建一个新视图提供选项以路由回默认页面) 4) 单击选项以恢复默认值。 5)无需重新加载,再次重新绘制默认页面。 6)点击“点击这里”按钮(这不起作用)

这里是代码

var LPRouter = Backbone.Router.extend({

    initialize: function (options) {
        this.pageContent = $('#pageContent');
    },

    routes: {
        'AA': 'routerMethod',
        '': 'defaultMethod'
    },

    defaultMethod: function () {
        //TODO: Set page title.

        var self = this;

        self.pageContent.empty();

        if (!self.someView) {
            self.someView = new SomeView();
            self.someView.render();
        }

        self.pageContent.append(self.someView.el);

        /*
        Create a view with some link or button which will redirect to routerMethod.
        */
    },

    routerMethod : function() {
        this.pageContent.empty();
        /*
            Create a view with some link or button which will redirect to defaultMethod.
        */

    }

});

var SomeView = Backbone.View.extend({

    tagName: "div",

    className: "someclass",

    initialize: function (options) {

    },

    hammerEvents: {
        'tap .innerclass': 'someMethod'
    },

    someMethod: function (e) {
        alert("did you click me?");
    },

    render: function () {
        this.$el.append("<div class='innerclass'><input type='button' value='click here'/></div>");
        return this;
    }

});

【问题讨论】:

    标签: backbone.js backbone-views backbone-events backbone-routing hammer.js


    【解决方案1】:

    您的渲染函数每次都会创建一个新按钮,因此绑定到原始按钮元素的事件不会绑定到新按钮元素。您可以使用 delegateEvents() 方法重新绑定事件哈希 - http://backbonejs.org/#View-delegateEvents

    【讨论】:

    • 但是我正在检查视图对象是否已经存在,基于此,我只是在创建新对象。
    • 为什么要委托?,我正在使用hammerEvents。
    • 我打算删除视图并重新渲染它。
    猜你喜欢
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    相关资源
    最近更新 更多