私は EmberJS アプリケーションを開発しており、ルーターのマッピングを再考し始めています。私のアプリケーションはorders
. 各オーダーにはdetails
、costs
およびが含まれますdimensions
。すべてのページをアドレス指定可能にしたい。これらのルートを定義して開発を開始しました。
App.Router.map(function() {
this.route('index', {path : '/'});
this.route('dashboard');
this.route('reports');
this.resource('orders', function() {
this.route('index', {path : '/'});
this.resource('order', { path: '/:order_id' }, function(){
this.route('index', {path : '/'});
this.route('costs');
this.route('dimensions');
this.resource('work', { path: '/works/:work_id' }, function(){
this.route('index', {path : '/'});
});
});
});
});
これは本当にうまくいきました。/orders
注文のリスト、/orders/1
一般的な注文の詳細、/orders/1/costs
注文/orders/dimensions
のコストと寸法などの URL がありました。
order
機能していましたが、ネストされたルートのそれぞれに異なるコントローラーがあったため、追加の作業が必要でした。私が行ったのはthis.modelFor('order');
、ネストされた各ルートのモデル フックでした。それでも、ルート間で何かを共有する必要があるように感じることもありました。これらはすべて同じモデル (オーダー) を使用していて、ルートの異なる部分で作業しているだけだからです。
「注文の作成」機能を追加したいときに問題が発生し始めました。/orders/new
新しいオーダーを作成して編集を開始するURL が必要です。同様に、/orders/new/dimensions
引き続き適用されます。つまり、変更されるのは、ルート:id
パラメーターを静的new
パスに変更することだけです。以前に開発したテンプレートとコントローラーを再利用できましたが、それを行う方法が見つかりませんでした。
おそらく、「注文」はリソースであり、単純なルートではないためです。この問題にどのように対処しますか?