2016-05-29 2 views
0

Я пользуюсь библиотекой dragula.js в веб-приложении ember.js.(Drag n drop) Dragula.js не работает над переходом на маршрут (в приложении ember.js)

Все отлично работает (в состоянии перетащить предметы) до тех пор, пока не будет revisit the route, после чего drag and drop just stops working, то есть, невозможно перетащить что-либо ранее перетаскиваемое. И в консоли нет ошибок js. Затем я обновляю страницу (с любого маршрута), она работает снова.

Короче говоря, drag n drop работает только в первый раз, когда маршрут посещен/загружен.

Что я пробовал:

  • проверена, если DOM items будет перетащить п упал, добавляются Dragula это config.containers.
  • Пробовал переустановка компонента из didInsertElement элемент внутри цикла запуска, запущенного в afterRender.

didInsertElement(){ this._super(...arguments); Ember.run.scheduleOnce('afterRender', this,() => { let drake = window.dragula(this.getDraggableContainers(), this.get('dragulaConfig')); this.set("drake", drake); }

Мне, кажется, что dragula библиотека инициализируются со всеми необходимыми конфигурациями, но я озадачен, почему он не работает правильно после пересмотра маршрута.

Любые помощь/указатели будут очень признательны. Благодаря!

ответ

0

Наконец-то я нашел какое-то время, чтобы опубликовать ответ на свой вопрос. Ура!

Причина:

Упоминание узла было недействительно или ставить другие слова, не может быть найдены в DOM, так как ссылки узла в моем didInsertElement крючке были направлена ​​на узлы, созданных в предыдущем посещении маршрут и при каждом последующем посещении одного и того же маршрута/страницы узлы DOM воссоздаются на ember (ofcourse :)).

Решение:

Вместо хранения/кэширования ссылки DOM узла, ссылка узловую свежий DOM до требуемых узлов необходимости быть извлечена на каждом маршруте поездки. Таким образом, у вас всегда будут действительные ссылки на узлы.