2017-11-21 18 views
0

Emberを使用して最上位URLを使用可能にしたい場合(つまり、localhost:4200/demo)、その下にあるすべてのルートも同じURLを表示するケースがありますlocalhost:4200/demo)。だから、ルートファイル、可能な場合は、次のようになります。複数のネストされたエバールートに同じURLを使用

this.route('demo', function() { 
    this.route('one', { path: '/' }); 
    this.route('submit', { path: '/' }); 
}); 

私はは全体のアプリを設定することができることを理解しますが、条件付きで親URLの下に特定のURLのためにこれを設定する方法はありますか?

答えて

0

デフォルトでは、EmberはURLを管理できますが、管理しないように設定することもできますが、論理的に許可されていない単一の環境で両方を行うことが望ましいようです。

としてnoneが宣言されている場合、EmberのデフォルトのURL管理はオフになっています。これは「環境全体」の構成です。

Ember Routerを使用してネストされたルートをマップし、デフォルトのURL管理が有効な場合は、複数の兄弟の子ルートに対して同じURLパスを定義することはできません。

上記の試みは、single index routeによって管理されている機能をタップしていて、ルータマップ内のすべてのネストレベルで利用できるということです。ただし、ルートには複数のルートを使用することはできません。index最後に定義されたものだけが認識されます。あなたはこのような主要な思わぬ障害にぶつかる終わるときエンバーは、暗黙的に何をやっていることは良い考えではないことを教えしようとしているので、

Router.map(function() { 
    this.route('demo', function() { 
    this.route('one', { path: '/' }) // <-- this is over-ridden by "submit" 
    this.route('submit', { path: '/' }) // <-- this defines an "index" route for demo 
    }) 
}) 
+0

ENV.locationtypeをnoneに設定することもできます。https://guides.emberjs.com/ v2.11.0 /設定-ember /指定-URL-type /。これは、パッケージ/ ember-routing/lib/system/router.jsのURLを設定しているEmberRouterがカスタマイズされ、アプリケーションレベルでオーバーライドされ、コアの慣習がそのまま残っていることを示唆しています。 – Ezra

+0

さて、私はemberのルートを可能な限り妨害したいと思いますし、オブジェクトのドット表記法を使って{{link-to}}のようなヘルパーを使用してルートを参照してください。ルート関数の{path: '/ string'}オブジェクトは既にデフォルトのURL構造をオーバーライドしているため、これを親ルートに提出することはかなり可能です。 {useParent:true}オブジェクトなどを追加するプラグインをロールバックする必要があります。既存の機能があるかもしれないと思っていたのですが、それと似たようなことをやった人がいました。 – Ezra

+0

@Ezra答えをさらに詳しく更新しました。私はこれが明確にするのを助けることを望む。 – jacefarm

1

は、一般的にそれがあります。

サブルートがURLに何らかの影響を与えないようにする特別な理由はありますか?あなたの主な目的が物事を難読化することであるなら、あなたはURLのランダムな値を取得できますか?

EmberはURLを使用して、アプリでどのような状態になるべきかを確認します。ルートを使用したくない場合は、その時点であなたは自分自身を切り替えなければならないコンポーネントのネストされた階層を扱っています。本質的には、ルータなしでReactを使用するのに似ています...

+0

私は同意します。 history_location.jsファイルを変更したり、動的コンポーネントの可読性と構造を向上させるための道を辿ることを決断しました。 – Ezra

+0

クール。また、喜んで受け入れ;-)受け入れる – acorncom

関連する問題