2016-05-29 2 views
0

ember.jsウェブアプリでdragula.jsライブラリを使用しています。(Drag n drop)Dragula.jsが経路を再訪していない(ember.jsアプリ内)

revisit the route、それ以降はdrag and drop just stops workingになるまで物事はうまくいきます(物事をドラッグ&ドロップすることができます)。つまり、以前はドラッグ可能だったものをドラッグできません。コンソールにjsエラーはありません。 次に、ページを(任意のルートから)リフレッシュして、再び動作します。

つまり、drag n dropは、経路が訪問/ロードされたとき初めて動作します

物事は私が試した:DOM itemsがドラッグnが落下する場合

  • が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

最終的に私自身の質問への回答を投稿する時間がありました。わーい!

理由:

ノードの参照が無効であるか、私のdidInsertElementフック内のノードの参照は、前の訪問で作成したノードに指していたので、他の言葉で入れて、DOMには見つかりませんでしたそのルートとその後の同じルート/ページへの訪問時にDOMノードはember(ofcourse :)によって再作成されています)。

対処:

代わりに必要なノードから新鮮DOMノード参照、DOMノードの参照をキャッシュ/記憶の各経路訪問にフェッチする必要があります。そうすれば、常に有効なノード参照が得られます。

関連する問題