2

我有一个关于 ember 路由器中基于非 id 的动态段的问题。我正在使用 Ember.VERSION :1.0.0-rc.1

我有一个嵌套资源,我需要在路径中使用 url 参数而不是 id。但是对 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

如果您已经加载了所有Things 那么您可以使用all方法来检索所有现有模型和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 回答