テンプレートにコピーリンクの入力があり、&ペーストをコピーするために、現在読み込まれているURL(クエリパラメータ付き)をユーザーに表示する必要があります。テンプレート内の現在のURLをトラッキングする
URLを入力する子どもの数を持つ親ルートに属するテンプレートの一部です:
- Parent route <-- Copy URL link in this template
- Child route
- Child route
- Child route
これは、子のルートをナビゲートして、URLが親に更新する必要があることを意味しルート。これは実装が非常に難しいと判明しています。
- AFAIK URL変更のネイティブイベントはありません。コンポーネントを作成してブラウザイベントを追跡することはできません。私は
hashchange
をwindow
にしようとしましたが、明らかにURLまたはクエリのパラメータではなく#
しか追跡していません。 - 子ルートへのその後の遷移が入力に反映されないため、ページが読み込まれるときに
window.location.href
を使用することはできません。その時点でURLがまだ更新されていませんので、私は親ルート上didTransition
アクション(または任意の他のルートフック)でwindow.location.href
でURLを取得することはできません - (つまり私は以前 URLを取得)
EDIT:
現時点では、これが動作しているようです唯一のアプローチです:
// In the parent route:
actions: {
didTransition() {
this._super(...arguments);
Ember.run.schedule('afterRender',() => {
this.set('controller.currentURL', window.location.href);
});
}
}
がかなりハッキーに見えます
よりクリーンなアプローチを確認してください:http://stackoverflow.com/a/39455543/334913 – acorncom