2012-06-28 11 views
5
events: 
    'click textarea': 'composeComment' 
    'click .submit': 'submit' 
    'blur textarea': 'textareaBlur' 
    'resize article': 'repositionBoards' 


repositionBoards: -> 
    #this is my own function, i just need it to be called everytime an article's size changes 
    board.align() 

Come si ottiene il metodo repositionBoards richiamato sugli eventi di ridimensionamento?Come si aggiunge un evento di ridimensionamento a un articolo in backbone?

risposta

8

Il resize event viene inviato a window:

L'evento resize viene inviato all'elemento window quando la dimensione della finestra del browser cambia

Ma gli eventi di una vista Backbone sono legati alla vista del el utilizzando delegate. La vista el non riceverà un evento resize, pertanto inserire 'resize articule': 'repositionBoards' nella vista events non servirà a nulla.

Se avete bisogno di ottenere l'evento resize nella vista, dovrete associarlo a window te:

initialize: (options) -> 
    $(window).on('resize', this.repositionBoards) 
remove: -> 
    $(window).off('resize', this.repositionBoards) # Clean up after yourself. 
    @$el.remove() # The default implementation does this. 
    @ 
repositionBoards: -> 
    # Use => if you need to worry about what `@` is 
    board.align() 

Si noti inoltre l'aggiunta di un remove in modo che si può associare il vostro gestore resize. Ovviamente, vuoi usare view.remove() per rimuovere la tua vista o semplicemente non preoccuparti se questa è l'intera applicazione.

+0

Grazie per la risposta completa. La mia unica preoccupazione è che le dimensioni dei miei articoli cambiano quando viene inserito il testo in esse. Quando la dimensione si espande, voglio chiamare le schede di riposizionamento. Ma dal momento che il ridimensionamento viene inviato alla finestra, questo non mi fa bene. Sai se ci sono eventi che possono essere legati al ridimensionamento di un articolo o di un div? Proprio quando si espande come quando aumenta l'altezza o la larghezza. Grazie ancora. –

+0

@ user1489926: Ma non c'è alcun evento di ridimensionamento su qualcosa di diverso dalla finestra, AFAIK devi farlo nel modo più duro: http://stackoverflow.com/q/172821/479863 –

Problemi correlati