(拖放)德拉古拉.js没有重新访问路线(在余烬.js应用程序中)



我正在ember.js的Web应用程序中使用dragula.js库。

事情运行良好(能够拖放东西),直到我revisit the route,之后drag and drop just stops working,也就是说,不能拖动以前可以拖动的任何内容。并且控制台中没有js错误。然后,我刷新页面(从任何路由),它再次工作。

简而言之,drag n drop仅在访问/加载路线时首次工作

我尝试过的事情:

  • 已验证要拖放的DOM items是否添加到 dragula 的config.containers中。
  • 尝试从afterRender运行循环中的didInsertElement元素重新渲染组件。

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

对我来说,似乎dragula库是用所有必需的配置初始化的,但我感到困惑的是,为什么它在重新访问路线后无法正常工作。

任何帮助/指示将不胜感激。谢谢!

我终于找到了一些时间来回答我自己的问题。耶!

原因:

节点引用无效或换句话说,在 DOM 中找不到,因为我的 didInsertElement 钩子中的节点引用指向在上次访问路由中创建的节点,并且在每次后续访问同一路由/页面时,DOM 节点正在由ember重新创建(当然:))。

溶液:

不是存储/缓存 DOM 节点引用,而是需要在每次路由访问时获取对所需节点的新 DOM 节点引用。这样,您将始终拥有有效的节点引用。

相关内容

  • 没有找到相关文章

最新更新