10

私はこの残り火アプリケーションを持っています:

Ember       : 1.3.2
Ember Model : 0.0.11
Handlebars  : 1.3.0
jQuery      : 1.9.1 

このリソース マップを使用すると、次のようになります。

App.Router.map(function () {
  this.resource('dimensions', function() {
    this.resource('dimension', { path: ':dimension_id'}, function () {
      this.resource('value', { path: 'values/:value_id' });
    });
  });
});

そして、これにより{{outlet}}、「ディメンション」テンプレートを埋める「ディメンション」テンプレートに埋め込み{{outlet}}、「値」テンプレートも埋める「ディメンション」テンプレートに埋め込むことができます。

「値」テンプレートのリンクへのヘルパーを除いて、すべてが非常にうまく機能します。これは、より多くのパラメーターを受け入れず、ember API ドキュメントで説明されている他のモデルも受け入れません。

深くネストされたルートで link-to を処理する最良の方法はどれですか?

私の問題を示すためにこのフィドルを持っています: http://jsfiddle.net/vsiguero/pQpE3/5/

ご協力いただきありがとうございます!

4

3 に答える 3

18

次のように、子ルートから親ルートのパラメーターにアクセスできます。

this.paramsFor(parent_route_name).param_name

/app/routes/dimensions/dimension/value.jsしたがって、ファイルで次のようにします。

export default Ember.Route.extend({
  model: function(params, transition) {
    var dimension_id = this.paramsFor('dimension').dimension_id;
    // do whatever you need with dimension_id and params.value_id
  }
});

これは、変更されて機能している jsFiddle のフォークです: http://jsfiddle.net/niaconis/kxejh9yr/
Ember を更新したことに注意してください。

のドキュメントは次のRoute#paramsForとおりです。http://emberjs.com/api/classes/Ember.Route.html#method_paramsFor

于 2015-01-10T01:06:39.557 に答える
6

最新の ember 1.5+ は、link-to子から親へのヘルパーに与えられたモデルまたはリテラル値を適用するため、現在のルート パスがデフォルトになるため、完全なモデル パスのモデルを提供する必要はありません。

また、メモリから transition.resolvedModels を使用して model() に渡された transition 引数を介して親モデルにアクセスできます。ルート パス内の各動的ルート セグメントは、そのオブジェクトの属性になるため、ルーター DSL が各セグメント パラメータ名に対して個別の名前を指定していることを確認してください (現在行っているように)。したがって、ValueRoute では次のようなことができます。

model: function(params,transition) {
    return transition.resolvedModels.dimension;
}
于 2014-05-18T03:37:40.240 に答える