Comment ajouter un événement de redimensionnement à la fenêtre dans une vue à l'aide de Backbone?

J'ai essayé de joindre un gestionnaire à l'événement de redimensionnement dans un de mes épine Dorsale de vues. Après avoir fait quelques recherches, j'ai découvert que vous ne pouvez associer des événements à la vue de l'élément ou de ses descendants.

C'est un problème pour moi parce que l'effet visuel que je suis en train de réaliser n'est pas possible à l'aide de pure CSS et exige un peu de JS pour définir les dimensions de la zone de contenu de l'élément en fonction de la fenêtre, moins l'élément d'en-tête.

Si vous éprouvez des difficultés à visualiser ce que je suis en train de faire, imaginer une mince en-tête et d'une zone de contenu qui doivent occuper l'espace restant avec aucun fond de CSS ruse 😉

J'ai joint un exemple de code. Si vous avez d'autres pointeurs j'aimerais également entendre!

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;
    }
);

Toute aide serait grandement appréciée par mon visage.

Merci,
Alex

source d'informationauteur Alex Tworowsky