我有一条路线,我想过滤商店,但它使用的是不属于模型本身的属性
App.Appointment = DS.Model.extend({
details: attr('string')
});
App.Router.map(function(match) {
this.resource("appointments", { path: "/appointments" }, function() {
this.route("index", { path: "/:day/all" });
});
});
当我点击此路线的模型方法时,我只是使用这个“day”属性查询api(因为它是查询后端的合法方式)。但是因为它不是模型的一部分,所以我不相信这是“应该”工作的方式。
App.AppointmentsIndexRoute = Ember.Route.extend({
model: function(params) {
return this.store.find('appointment', params);
}
});
我应该如何为不暴露像这样的模型属性的ember模型编写路由?
我还应该提一下,调用setupController方法时效果不好,因为注入的“模型”参数是{day:“2013-01-01”}而不是一组约会模型(我可以破解这个,但感觉我做错了)
答案 0 :(得分:0)
我发现创建一个哈希对象解决了这个问题(因此,在支持查询参数之前,这是一个很好的解决方案,感觉不那么笨拙)
App.AppointmentsIndexRoute = Ember.Route.extend({
model: function(params) {
return Ember.RSVP.hash({
appointments: this.store.find('appointment', params),
day: params.day
});
},
setupController: function(controller, model) {
controller.set('model', model.get('appointments'));
controller.set('day', model.get('day'));
}
});
我还应该表明,如果你创建一个linkTo帮助器或转换到这条路线,你需要这样做
App.IndexRoute = Ember.Route.extend({
redirect: function() {
var now = new Date();
var today = moment(now).format('YYYY-MM-DD');
this.transitionTo('appointments.index', today);
}
});