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