2

ember ルーターの非 ID ベースの動的セグメントに関して質問があります。私は Ember.VERSION を使用しています: 1.0.0-rc.1

ネストされたリソースがあり、ID の代わりにパスで url パラメーターを使用する必要があります。ただし、json API への ajax 呼び出しでは ID を要求する必要があります。

したがって、ハンドルバーのテンプレートには次のものがあります。

{{#each thing in controller}}
    {{#linkTo 'thing' thing.url}}{{thing.name}}{{/linkTo}}
{{/each}}

モノのルートは次のようになります。

App.ThingsRoute = Ember.Route.extend({ 
    model: function() {
        return App.Thing.find(); 
    }
});

そしてルーター:

App.Router.map(function() {
    this.resource('things', function() {
        this.resource('thing', {path:':thing_url'}); 
    });
});

解決する URL をモノの ID にマップするにはどうすればよいですか?

4

3 に答える 3

0

フレッドは正しい。モデル フックは params 引数を取ります。より完全な例を次に示します。

App.ThingRoute = Ember.Route.extend({
  model: function(params) {
    return App.Thing.find(params.thing_url);
  }
});
于 2013-03-02T06:52:52.960 に答える
0

Thingすべてのをすでにロードしている場合は、 allmethod を使用して既存のすべてのモデルを取得し、 method を使用findPropertyして特定のプロパティで配列アイテムを見つけることができます。

App.ThingRoute = Ember.Route.extend({
    model: function(params) {
        return App.Thing.all().findProperty('url', params.thing_url);
    }
});

必要なモデルがロードされていない場合、これは機能しないことに注意してください。モデルが配列にない場合はfindProperty返され、サーバーへのリクエストは生成されません。undefined

于 2013-03-02T13:55:45.540 に答える
-1

モデル メソッドには渡されるパラメーターがあり、この場合は thing.url になるため、そこにアクセスできる必要があります。

ここで動的モデルの部分を読んで ください http://emberjs.com/guides/routing/specifying-a-routes-model/

于 2013-03-02T05:22:40.220 に答える