Ho cercato di associare un gestore all'evento di ridimensionamento in una delle mie viste Backbone. Dopo aver fatto alcune ricerche, ho scoperto che è possibile solo allegare eventi all'elemento della vista o ai suoi discendenti.Come si aggiunge un evento di ridimensionamento alla finestra in una vista utilizzando Backbone?
Questo è un problema per me perché l'effetto visivo che sto cercando di ottenere non è possibile utilizzando puro CSS e richiede del JS per impostare le dimensioni dell'elemento dell'area del contenuto in base alla finestra meno l'elemento dell'intestazione.
Se si hanno problemi a visualizzare quello che sto cercando di fare, immaginare un colpo di testa sottile e un'area di contenuto che deve occupare lo spazio rimanente senza CSS sfondo inganno;)
Ho allegato un esempio di codice. Se hai altri suggerimenti, mi piacerebbe anche ascoltarli!
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;
}
);
Qualsiasi assistenza sarebbe molto apprezzata dal mio viso.
Grazie, Alex
Grazie per la tua risposta veloce! Ma è una cattiva pratica andare al di fuori del livello degli eventi di Backbone? –
Direi che non ti preoccupare troppo. L'evento di ridimensionamento non interagisce in modo complesso con la struttura MVC, quindi non stai perdendo nulla semplicemente avendo un ascoltatore separato – wheresrhys
Grazie per aver chiarito che per me –