Javascript 余烬JS中的滚动检测?
在Ember JS中检测滚动的最佳方法是什么?没有内置的滚动动作,我可以使用jquery,但不确定放在哪里?它会出现在我的Javascript 余烬JS中的滚动检测?,javascript,ember.js,web-applications,scroll,action,Javascript,Ember.js,Web Applications,Scroll,Action,在Ember JS中检测滚动的最佳方法是什么?没有内置的滚动动作,我可以使用jquery,但不确定放在哪里?它会出现在我的application.js中,因为它有应用范围,还是其他地方 实际的滚动检测/逻辑在这里不是问题,而是如何以Embery方式设置这样的脚本 理想情况下,滚动是一种操作,可以在application.js文件中进行处理: import Ember from 'ember'; export default Ember.Route.extend({ actions: {
application.js
中,因为它有应用范围,还是其他地方
实际的滚动检测/逻辑在这里不是问题,而是如何以Embery方式设置这样的脚本
理想情况下,滚动是一种操作,可以在application.js文件中进行处理:
import Ember from 'ember';
export default Ember.Route.extend({
actions: {
onScroll: function() {
alert('scrolled');
}
}
});
在工作中,我们使用生命周期挂钩来注册/注销在Ember中未实现的事件。我们使用didInsertElement和willDestroyElement生命周期挂钩将jQuery事件绑定/解除绑定到特定名称空间(通常是组件ID): 代码示例:
import Ember from 'ember';
export default Ember.Component.extend({
didInsertElement() {
this._super(...arguments)
// Register your events here
Ember.$(document).on('scroll.my-namespace', 'body', this.eventHandler)
// this.$ if the element is located inside the component
},
willDestroyElement() {
this._super(...arguments)
Ember.$(document).off('scroll.my-namespace')
// this.$ if the element is located inside the component
},
eventHandler(ev) {
//Do sth with event
}
})
另一种方法是扩展Ember.events的服务。在该服务中,您还可以注册jQuery事件侦听器。需要侦听scroll事件的组件可以订阅服务()。我最终使用了这个,ember perfectscroll
。它包装了必要的模板,并提供了大量有用的CSS类/函数。看看这一点,它是有用的。这已解释为调整大小
您可以将其替换为滚动
。。。