无法为排序要求设置数据

时间:2017-12-19 06:51:28

标签: sorting ember.js

我试图通过扩展Ember对象来对数据进行排序。但是得到错误:TypeError: dataFilter.set is not a function任何人都可以纠正我或告诉我正确的排序方式吗?

我正在尝试保留单独的对象以进行排序或过滤。

这是我的代码:

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') );
        }
    }
});

1 个答案:

答案 0 :(得分:1)

在您的代码段中,您通过扩展class定义了名为dataFilter的{​​{1}};但是你没有从中创建任何实例。运行代码Ember.Object会自然引发错误,指示dataFilter.set('cardList', this.get('combineArray') );dataFilter.set is not a function不是实例。如果您将dataFilter声明为

dataFilter

然后这些线不会抛出错误;因为let dataFilter = Ember.Object.extend({ cardList:null, sortByAmountSpent:Ember.computed.sort('name', 'cardList'), sortByDateOfPurchase:Ember.computed.sort('age', 'cardList') }).create(); 将是定义的类的实例,dataFilter自然地在扩展set的类的实例中定义。