2017-03-11 17 views
1

Ember jsのURLにコンポーネントの名前を追加したいとします。ember jsにコンポーネントの名前をURLに追加する方法

例:

主なURLがある場合:localhostを:4200 /家、 その後、自宅で、私はコンポーネント(たとえば - ABC)にリダイレクトする/呼び出す場合、URLが追加されるはずです:

はlocalhost:4200/ABC または はlocalhost:4200 /ホーム/ ABC

+0

私は最近、ember jsの学習と作業を始めました。 – user2865480

+0

ルートに作成されたページは、URLにリダイレクトされると表示されます。 例:ログイン用のルートがある場合、home、パスワードを忘れました。ホームにはWebアプリケーションのすべてのコンポーネントが含まれています。次に、urlに/ login、/ home、または/ forgot-passwordを付けることができます。 /abcや/ home/abcのように、家の中の任意のコンポーネント(abc)をURLに表示できない 私の理解が間違っている場合は教えてください – user2865480

+0

あなたはEmberを初めてお使いになり、私はこれが特殊なケースではないと賭けています。答えはあなたがこれについて考えている方法を変えることだと思います。コンポーネントをルートのように動作させるのではなく、単にルートを使用して、コンポーネントをそのルートのテンプレートに配置します。 – sheriffderek

答えて

0

あなたは{{component}}ヘルパーでそれを行うことができます。

ホームの動的パスを定義し、modelフックでurlからホームコントローラにコンポーネント名を送信する必要があります。

以下は、ソリューションの重要な部分です。

//router.js 
this.route('home', {path: 'home/:cmp'}); 

//routes/home.js 
model(params){ 
    return params.cmp; 
} 

//templates/home.hbs 
{{component model}} 

主なURLがある場合this tiwddle

1

を見てみてください:localhostを:4200 /家、そして自宅で、私は コール/コンポーネント(たとえば - ABC)にリダイレクトする場合は、 URLは追加されます:

どのようにしてemberのコンポーネントにコール/リダイレクトしますか?あなたがそれを行うためのいくつかのハッキーな方法を持っている場合、私はあなたにこれをしないように励まします。 Emberでは、ルータはあなたが定義したルートへの現在のURLを照合します。

/home/abc URLパスを取得した場合は、abcルートがhomeルート内にネストされていることを意味します。

Router.map(function() { 
    this.route('home', function() { 
    this.route('abc'); 
    }); 
}); 

すべてのルートがホームルートになることがわかっている場合は、手動で定義できます。あなたが知らない場合、または何が来るのだろうと仮定したら、defining the dynamic segmentsのURLに行きます。

関連する問題