Tengo un mixin que recalcula automáticamente y establece el alto de un div en el cambio de tamaño de la página.¿Cómo debo vincularme a una función de ventana en una Vista Ember?
Funciona pero parece tonto a mí para ser la unión a un evento jQuery y activar un evento Ember manualmente cada vez que se llama.
¿Hay alguna manera de vincular los eventos de ventana directamente en Ember?
Tengo un jsFiddle simplificado here
Este es el código:
App.windowWrapper = Ember.Object.create(Ember.Evented,
resizeTimer: null
init: ->
@_super()
object = this
$(window).on 'resize', ->
window.clearTimeout(object.resizeTimer)
object.resizeTimer = setTimeout(App.windowWrapper.resize, 100)
true
resize: ->
App.windowWrapper.fire('resize')
)
Y el mixin que lo está llamando.
App.Scrollable = Ember.Mixin.create
classNames: "scrollable"
init: ->
Ember.assert("Scrollable must be mixed in to a View", this instanceof Ember.View)
@_super()
didInsertElement: ->
@_super()
@calculateHeight()
App.windowWrapper.on('resize', this, 'calculateHeight')
willDestroyElement: ->
App.windowWrapper.off('resize', this, 'calculateHeight')
@_super()
calculateHeight: ->
offset = @$().offset().top
windowHeight = $(window).height()
@$().css('height', windowHeight - offset)
usted no necesitaría el objeto '= this' si se ha utilizado una flecha grasas (' => ') al registrar el controlador de eventos. – ebryn