3

私は EmberJS アプリケーションを開発しており、ルーターのマッピングを再考し始めています。私のアプリケーションはorders. 各オーダーにはdetailscostsおよびが含まれます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パスに変更することだけです。以前に開発したテンプレートとコントローラーを再利用できましたが、それを行う方法が見つかりませんでした。

おそらく、「注文」はリソースであり、単純なルートではないためです。この問題にどのように対処しますか?

4

1 に答える 1