Как мне добавить событие изменения размера в окно в представлении с использованием Backbone?

Я пытался прикрепить обработчик к событию изменения размера в одном из моих представлений Backbone. Проведя небольшое исследование, я обнаружил, что вы можете прикреплять события только к элементу представления или его потомкам.

Это проблема для меня, потому что визуальный эффект, который я пытаюсь достичь, невозможен с использованием чистого CSS и требует некоторого JS для установки размеров элемента области содержимого на основе окна за вычетом элемента заголовка.

Если у вас возникли проблемы с визуализацией того, что я пытаюсь сделать, представьте тонкий заголовок и область содержимого, которая должна занимать оставшееся пространство без каких-либо уловок фона CSS;)

Я приложил пример кода. Если у вас есть другие указатели, я бы тоже хотел их услышать!

define(
    [
        'jQuery',
        'Underscore',
        'Backbone',
        'Mustache',
        'text!src/common/resource/html/base.html'
    ],
    function ($, _, Backbone, Mustache, baseTemplate) {
        var BaseView = Backbone.View.extend({

            el: $('body'),

            events: {
                'resize window': 'resize'
            },

            render: function () {
                var data = {};

                var render = Mustache.render(baseTemplate, data);

                this.$el.html(render);

                this.resize();
            },

            resize: function () {
                var windowHeight = $(window).height();

                var headerHeight = this.$el.find('#header').height();

                this.$el.find('#application').height( windowHeight - headerHeight );
            }
        });

        return new BaseView;
    }
);

Я буду благодарен за любую помощь.

Спасибо, Alex

12
задан Alex Tworowsky 2 February 2012 в 09:41
поделиться