我对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'});
});
});
如何映射网址以解析事物ID?
答案 0 :(得分:0)
App.ThingRoute = Ember.Route.extend({
model: function(params) {
return App.Thing.find(params.thing_url);
}
});
答案 1 :(得分:0)
如果您已经加载了所有Thing
,则可以使用all
方法检索所有现有模型,并使用findProperty
方法按特定属性查找数组项:
App.ThingRoute = Ember.Route.extend({
model: function(params) {
return App.Thing.all().findProperty('url', params.thing_url);
}
});
请注意,如果未加载必需的模型,则此操作无效 - 如果model不在数组中,findProperty
将返回undefined
,并且不会生成对服务器的请求。
答案 2 :(得分:-1)
模型方法有一个传递的参数,在这种情况下将是thing.url,因此你可以在那里访问它。
在此处阅读动态模型部分 http://emberjs.com/guides/routing/specifying-a-routes-model/