私は自動的に再計算し、ページのサイズ変更時にdivの高さを設定するmixinを持っています。Ember Viewのウィンドウ関数にどのようにバインドする必要がありますか?
これは動作しますが、jQueryイベントにバインドして呼び出されるたびに手動でEmberイベントをトリガするのは私にとっては馬鹿しく思えます。
Emberに直接ウィンドウイベントにバインドする方法はありますか?
私は簡素化JSFiddle hereを持って
これはコードです:
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')
)
そしてそれを呼んでいるのmixin。
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)
。 – ebryn