He intentado adjuntar un controlador al evento de cambio de tamaño en una de mis vistas de Backbone. Después de investigar un poco, descubrí que solo puedes adjuntar eventos al elemento de la vista o a sus descendientes.¿Cómo agrego un evento de cambio de tamaño a la ventana en una vista usando Backbone?
Esto es un problema para mí porque el efecto visual que estoy tratando de lograr no es posible usando CSS puro y requiere algunas JS para establecer las dimensiones del elemento del área de contenido menos el elemento de encabezado.
Si tiene problemas para visualizar lo que estoy tratando de hacer, imaginar una cabecera delgada y un área de contenido que debe ocupar el espacio que queda sin CSS fondo engaño;)
He adjuntado un ejemplo de código. Si tienes otros indicadores, ¡también me encantaría escucharlos!
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;
}
);
Cualquier ayuda sería muy apreciada por mi cara.
Gracias, Alex
Gracias por su rápida respuesta! ¿Pero es una mala práctica salir de la capa de eventos de Backbone? –
Yo diría que no te preocupes demasiado. El evento de cambio de tamaño no hace ninguna interacción compleja con tu estructura MVC por lo que no estás perdiendo nada con solo tener un escucha por separado – wheresrhys
Gracias por aclarar eso para mí –