0

次のボタン クリックは、ルーティング後ではなく、ページの読み込み時にのみ機能します。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;
    }

});
4

1 に答える 1

1

レンダリング関数は毎回新しいボタンを作成するため、元のボタン要素にバインドされていたイベントは新しいボタン要素にバインドされません。delegateEvents() メソッドを使用して、イベント ハッシュを再バインドできます - http://backbonejs.org/#View-delegateEvents

于 2013-10-24T17:41:19.657 に答える