如何在ExtJS中扩展2个类?

时间:2016-03-29 05:23:47

标签: inheritance extjs filter pagination extjs4.2

要求是为搜索合同添加分页和过滤器。 我有一个名为SearchContractInfo的类,它必须扩展' Ext.ux.data.PagingStore'和' Ext.data.Store'分别实现分页和文件管理器。

由于一个类不能在ExtJS中扩展2个类。扩展2个类的替代解决方案是什么?

问题是,如果我扩展' Ext.ux.data.PagingStore',分页工作,过滤器不会。

如果我扩展了Ext.data.Store',过滤器工作,分页没有。

我需要分页和过滤器一起工作。

如果有人能提出解决方案,那将是很有帮助的。

代码段:

Ext.define(' CLAdmin.store.SearchContractInfo',{

//extend: 'Ext.ux.data.PagingStore',
extend:'Ext.data.Store',
model: 'CLAdmin.model.administration.SearchContractInfo',
 pageSize: 30,
lastOptions: {start: 0, limit: 30, page: 1},
proxy: {
    type: 'direct',
    directFn: 'contractAction.searchContracts',
    reader: {
        root: 'records'
    },
    extraParams: {
        searchCriteria: undefined
    },
    listeners: {
        exception: function(me, response, operation, eOpts) {
            var msg = "Application unavailable.Please try after some time";

            Ext.Msg.show({
                title: 'Application',
                msg: msg,
                buttons: Ext.Msg.OK,
                icon: Ext.Msg.ERROR
            });

        }
    }
},
sorters: [
    {
        property: 'customerNumber',
        direction: 'ASC'
    },
    {
        property: 'startDate',
        direction: 'DESC'
    }
]

});

谢谢, Amith

1 个答案:

答案 0 :(得分:1)

使用mixins

  

在面向对象的编程语言中,mixin是一个类   包含其他类使用的方法,而不必是   那些其他类的父类。那些其他课程如何获益   访问mixin的方法取决于语言。 Mixins是   有时被描述为“包含”而不是“继承”。

定义课程时,您可以传递mixins

  

要混合到此课程中的课程列表。

Ext.define('CanSing', {
     sing: function() {
         alert("For he's a jolly good fellow...")
     }
});

Ext.define('Musician', {
     mixins: ['CanSing']
});
     

在这种情况下,音乐家课将从CanSing mixin获得一种唱歌方法。

你的mixins可以扩展Ext.Mixin

  

这个类是mixins的基类。这些是扩展的类   此类,旨在用作用户代码的mixin。

     

它为mixins提供了“挂钩”类方法的能力   他们混在一起的课程。例如,考虑破坏   方法模式。如果mixin类有清理要求,那就可以了   需要被称为毁灭的一部分。