3gwebtrain
3gwebtrain

Reputation: 15299

Not able to set the data for sorting requirement

I am trying to sort my datas by extending the Ember object. But getting error as : TypeError: dataFilter.set is not a function any one please correct me or show me the correct way to sort?

I am trying to keep the separate object for sorting or filter purposes.

here is my code :

import Ember from 'ember';

let dataFilter = Ember.Object.extend({
    cardList:null,
    sortByAmountSpent:Ember.computed.sort('name', 'cardList'),
    sortByDateOfPurchase:Ember.computed.sort('age', 'cardList')
})

export default Ember.Controller.extend({
    combineArray:Ember.computed(function(){
        return [
                {"name":"name1","age":"age1"},
                {"name":"name2","age":"age2"},
                {"name":"name0","age":"age3"}
            ];
    }),
    actions:{
        sortByDateOfPurchase:function(){
            dataFilter.set('cardList', this.get('combineArray') );
        },
        sortByAmountSpent:function(){
            dataFilter.set('cardList', this.get('combineArray') );
        }
    }
});

Upvotes: 0

Views: 28

Answers (1)

feanor07
feanor07

Reputation: 3368

In your code snippet, you have defined a class named dataFilter via extending Ember.Object; however you did not create any instance from it. Running the code dataFilter.set('cardList', this.get('combineArray') ); naturally throws an error indicating dataFilter.set is not a function. dataFilter is not an instance. If you declare dataFilter as

let dataFilter = Ember.Object.extend({
    cardList:null,
    sortByAmountSpent:Ember.computed.sort('name', 'cardList'),
    sortByDateOfPurchase:Ember.computed.sort('age', 'cardList')
}).create();

then those lines will not be throwing errors; because dataFilter will be an instance of the class defined and set is naturally defined in an instance of a class extending Ember.Object.

Upvotes: 1

Related Questions