2016-09-20 7 views
0

Каков наилучший способ обнаружения прокрутки в Ember JS? Нет встроенного действия прокрутки, и я могу использовать jquery, но не знаю, где его разместить? Пойдет ли это в моем application.js, потому что у него есть область применения или где-то еще?Обнаружение прокрутки в Ember JS?

Фактическое определение/логика прокрутки здесь не проблема, а как настроить сценарии, подобные этому способом Embery.

В идеале прокрутка бы действие, и может быть обработан как таковы в application.js файла:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
    actions: { 
     onScroll: function() { 
      alert('scrolled'); 
     } 
    } 
}); 
+0

Посмотрите на это [ответ] (http://stackoverflow.com/a/39586157/5771666), и это [twiddle] (https://ember-twiddle.com/291fd5e4d9e222fd34a28c31768b5974?openFiles=components.my- component.js% 2Ctemplates.components.my-component.hbs). что было объяснено для 'resize', вы можете заменить его' scroll' ... – kumkanillam

ответ

1

Я закончил с использованием этого awesome library, ember-perfectscroll. Он обертывает необходимые шаблоны и предоставляет массу полезных классов/функций CSS.

4

На работе мы использовали жизненный цикл крючки для регистрации/незарегистрированного события, которые не реализованы в Эмбере. Мы использовали didInsertElement и willDestroyElement жизненный цикл крючки для связывания/UNBIND события Jquery к определенному пространству имен (часто компоненты ID): https://guides.emberjs.com/v2.8.0/components/the-component-lifecycle/

Пример кода:

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.Evented. В этой службе вы также можете зарегистрировать прослушиватель событий jQuery. Компоненты, которые должны прослушивать событие прокрутки, могут подписаться на услугу (http://emberjs.com/api/classes/Ember.Evented.html).

 Смежные вопросы

  • Нет связанных вопросов^_^