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