私は 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パスに変更することだけです。以前に開発したテンプレートとコントローラーを再利用できましたが、それを行う方法が見つかりませんでした。
おそらく、「注文」はリソースであり、単純なルートではないためです。この問題にどのように対処しますか?