backbone.hammer.js,事件不是第二次被解雇

时间:2013-10-24 16:15:18

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

以下按钮单击仅适用于页面加载,而不适用于路由后。 1)显示默认页面 2)单击“单击此处”按钮(此工作) 3)单击其他按钮进行路由(无需重新加载页面,清除内容,并创建新视图提供选项以路由回默认页面) 4)单击选项以返回默认值。 5)没有重新加载再次重绘defult页面。 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;
    }

});

1 个答案:

答案 0 :(得分:1)

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