7

残り火の新しいルーターでコンソールのcurrentPathを取得するための同等の関数はありますか?

以前、私はこれを行うことができました:

App.router.get("currentPath")

ただし、新しいルーターでは、同じ方法でルーターにアクセスできないようです。実際、App.routerは単にundefinedを返します。

ここでの助けをいただければ幸いです。

編集:

関連するメモとして、私はアクセスできなくなりApp.router、そのプロパティにアクセスできなくなったため、状態の変更を手動でトリガーする方法がわかりません。例えば、

App.router.transitionTo("some.state")

もはや実行可能ではありません。今、これの代わりにみんな何をしているの?

4

4 に答える 4

12

答えはgithubの問題に埋もれていることがわかりました。後世のためにここに再投稿してください。

App.container.lookup('router:main').router

..ルーターを返します。transitionToとhandleURLにアクセスして、状態の変更を手動でトリガーできます。以前のように現在の状態を取得する方法は正確にはわかりませんが、ルーターのcurrentHandlerInfosプロパティにアクセスして、現在のハンドラーの配列を取得できるようです(duh)。

これが他の誰かが自分の髪を引き裂くことを防ぐことを願っています。

于 2013-01-02T01:40:06.483 に答える
4

最新のビルドでは、ルーターを見つけて次のように状態を変更できます。

App.Router.router.transitionTo('posts.comments');

また

App.Router.router.handleURL('/posts/comments');

これが推奨される方法かどうかはわかりませんが(現時点ではルーターは非常に移動しているターゲットです)、今のところは機能します。

于 2013-01-12T04:19:09.960 に答える
1

Ember 3.9以降、新しいルーターサービスAPIドキュメントは次のとおりです。

https://api.emberjs.com/ember/3.9/classes/RouterService

import Component from '@ember/component';
import { inject } from '@ember/service';

export default Component.extend({
  router: inject(),

  actions: {
    next() {
      this.router.transitionTo('other.route');
    }
  }
});

currentPathまた、ルーターサービスを利用する方法について投稿した回答もあります。

https://stackoverflow.com/a/55580684/4044548

于 2019-04-08T19:45:29.180 に答える
-2

私はこれがすべきだと思います

function getCurrentPath(){
  str = "currentState.parentState"
  arr = []
  arr.push(App.router.get("currentState.name"))
  while(true){
    name = App.router.get(str+".name");
    arr.push(name)
    str += ".parentState";
    if(name == "root"){
      break;
    }
  }
  return arr.reverse().join(".")
}

currentPath = getCurrentPath();
于 2013-01-01T11:54:54.540 に答える