Fixture contain list of contacts and each contact has contact type. I am trying to filtrate contact records using .findQuery() but it is throwing following error :
Uncaught TypeError: Object function () {.....} has no method 'findQuery'
I have listed my code here :
Grid.Store = DS.Store.extend({
revision: 12,
adapter: 'DS.FixtureAdapter'
});
Grid.ModalModel = DS.Model.extend({
fname: DS.attr('string'),
lname: DS.attr('string'),
email: DS.attr('string'),
contactno: DS.attr('string'),
gendertype: DS.attr('boolean'),
contactype: DS.attr('number')
});
Grid.ModalModel.FIXTURES = [
{
id: 1,
fname: "sachin",
lname: "gh",
email: "gh",
contactno: "4542154",
gendertype: true,
contactype: 1
},
{
id: 2,
fname: "amit",
lname: "gh",
email: "gh",
contactno: "4542154",
gendertype: true,
contactype: 2
},
{
id: 3,
fname: "namit",
lname: "gh",
email: "gh",
contactno: "4542154",
gendertype: true,
contactype: 1
}
];
Controller Code:
totpersonalcontact:function(){
return Grid.ModalModel.findQuery({ contactype: 2 }).get('length');
}.property('@each.isLoaded'),
totfriendcontact:function(){
return Grid.ModalModel.findQuery({ contactype: 3 }).get('length');
}.property('@each.isLoaded')
I have changed .findQuery to .query but every time it is showing length as 0.
Just change findQuery to query.
After this a error message will appear in console:
Assertion failed: Not implemented: You must override the DS.FixtureAdapter::queryFixtures method to support querying the fixture store.
Like the message explain, just implement the DS.FixtureAdapter#queryFixtures.
The parameters passed to queryFixtures is: records, query, type. Where:
Records is an array of plain javascript objects, that you will filter. Query is the object passed to query method of your ember data class.Type is the ember data class, where the query is call.And the return is the filtered data.
For example, to perform a simple where like:
App.Person.query({ firstName: 'Tom' })
Just reopen your DS.FixtureAdapter with:
DS.FixtureAdapter.reopen({
queryFixtures: function(records, query, type) {
return records.filter(function(record) {
for(var key in query) {
if (!query.hasOwnProperty(key)) { continue; }
var value = query[key];
if (record[key] !== value) { return false; }
}
return true;
});
}
});
Here is a live demo.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With