1

私はバックボーンに足を踏み入れたところですが、簡単に解決できる問題があると思います。クリックするとパネルが開き、閉じるとタブに戻る単純なタブである次のビューがあります。

myApp.views.Support = {
    Form: Backbone.View.extend({
        initialize: function () {
            this.el = $('#support');
            this._ensureElement();
        },
        render: function () {
            if (this.$el.hasClass('support-panel')) {
                // close panel
                this.$el.empty();
                this.$el.removeClass('support-panel');
                this.$el.addClass('support-button');
            }
            else {
                // open and populate panel
                var template = _.template(myApp.utils.RenderTemplate('support/default'), {});
                this.$el.removeClass('support-button');
                this.$el.addClass('support-panel');
                this.$el.html(template);
            }

            return this;
        },
        closePanel: function () {
            alert('close event fired');
        },
        events: {
            'click #SubmitFormButton': 'submitForm',
            'click #CloseSupportPanel': 'closePanel'
        },
        submitForm: function (event) {
            alert('form submitted: ' + $('#message'));
        }
    })
}

クリックイベントが発生するたびに「closePanel」が+2回発生することを除いて、すべて正常に機能しています。私が行方不明になっているのはある種のクリーンアップだと思いますが、何がわかりません。

4

2 に答える 2

3

イベントが盛り上がっているためと思われます。戻ってみてくださいfalse

于 2013-03-10T23:42:23.707 に答える
1

これは古い質問であることは知っていますが、私の問題が何であるかを理解するのに役立ちました. ダニエルが言ったようにfalseを返すとうまくいきますが、私の問題の根本的な原因は、マークアップにjQueryセレクターが2回あるため、2つのjQueryオブジェクトが作成されるため、クリックイベントが2回発生します。

于 2014-04-03T15:30:52.190 に答える