1
我为我的Ember应用程序设置了以下脚手架。实施模型过滤器
window.App = Ember.Application.create({});
App.Router.map(function() {
this.resource('coaches', function() {
this.resource('coach', {path: "/:person_id"});
});
});
App.ApplicationAdapter = DS.FixtureAdapter.extend({});
App.Person = DS.Model.extend({
fname: DS.attr('string')
,lname: DS.attr('string')
,sport: DS.attr('string')
,bio: DS.attr('string')
,coach: DS.attr('boolean')
,athlete: DS.attr('boolean')
});
App.Person.FIXTURES = [
{
id: 10
,fname: 'Jonny'
,lname: 'Batman'
,sport: 'Couch Luge'
,bio: 'Blah, blah, blah'
,coach: true
,athlete: true
}
,{
id: 11
,fname: 'Jimmy'
,lname: 'Falcon'
,sport: 'Cycling'
,bio: 'Yada, yada, yada'
,coach: false
,athlete: true
}
];
我想设置一个路由来过滤人员模型,并只返回教练。为了确保我可以访问数据,我只是在人员模型上使用了一个findAll。
App.CoachesRoute = Ember.Route.extend({
model: function() {
return this.store.findAll('person');
}
});
现在,虽然,我想实现的Ember.js Models - FAQ页面底部详述的滤波方法。
App.CoachesRoute = Ember.Route.extend({
model: function() {
var store = this.store;
return store.filter('coaches', { coach: true }, function(coaches) {
return coaches.get('isCoach');
});
}
});
教练的路线根本不工作,新的路线实施了,老的路线被注释掉了。我使用Ember Chrome扩展程序,当使用过滤器路由时,控制台响应Error while loading route: Error: No model was found for 'coaches'
。显然这条路线不能正常工作,特别是模型。不开玩笑吧?我在过滤器模型路线中缺少什么?
非常感谢您的帮助。
史蒂夫,首先。谢谢你的时间来看看这个。很明显,我一直在看代码太久。感谢您了解引用“人”模型的需求。但现在,我正在抛出另一个错误。 加载路由时出错:错误:断言失败:未实现:您必须重写DS.FixtureAdapter :: queryFixtures方法以支持查询fixture存储。是否有更好的方法用于过滤?这似乎过于困难。 – knu2xs
这是正确的。 'FixtureAdapter'不支持查询。我想你会在某个时候用真正的服务器替换你的灯具?否则,您可以使用自己的适配器扩展'FixtureAdapter'并实现'findQuery()'。如果我的答案解决了你的第一个问题,那么谢谢你“接受”它是一个正确的答案。 –
因此,在做了一些更多的研究后,如果我想在客户端进行过滤,我需要在控制器中进行过滤,这是正确的吗? – knu2xs