Javascript ExtJS 4 remoteSort asDate

Javascript ExtJS 4 remoteSort asDate,javascript,extjs,extjs4,extjs4.1,Javascript,Extjs,Extjs4,Extjs4.1,对于我的远程排序,我在ExtJS 3中使用关键字asDate,它是在请求的方向部分发送的: sort:my_date dir:asDate ASC 在ExtJS 4中,我错过了请求中的sortType信息: sort:[{"property":"my_date","direction":"DESC"}] 有什么方法可以在服务器端获取sortType信息吗?您可以使用override Encoder Sorters功能。我给你举个例子:) var store=Ext.create('Ext.

对于我的远程排序,我在ExtJS 3中使用关键字asDate,它是在请求的方向部分发送的:

sort:my_date
dir:asDate ASC
在ExtJS 4中,我错过了请求中的sortType信息:

sort:[{"property":"my_date","direction":"DESC"}]

有什么方法可以在服务器端获取sortType信息吗?

您可以使用override Encoder Sorters功能。我给你举个例子:)

var store=Ext.create('Ext.data.store'{
模型:“用户”,
分拣机:[{
财产:'年龄',
方向:“DESC”,
sortType:'asDate'
}, {
属性:“firstName”,
方向:“ASC”
}],
代理:{
键入:“ajax”,
url:“/echo/json/”,
读者:{
键入:“json”,
root:'用户'
},
编码器分拣机:功能(分拣机){
var min=[],
长度=分拣机。长度,
i=0;
对于(;i
大多数情况下,您已经知道要排序的类型。排序主要在数据库端完成。(它是专为它而设计的,而且是最好的)在数据库中,您可以在“my_date”列上进行排序。如果您适当地保存日期,数据库就会知道这是一个日期。当您不在数据库中排序,而是在后端排序时,情况也是如此。存储区中的数据映射到后端对象。如果“my_date”保存在适当的数据类型中,则很容易进行适当的排序。是的,当然,但我的情况并非如此。我需要知道定义了哪个sortType,如果它是asDate,我的后端会将它转换为ORDER BY Stru to_DATE(…)结论:您的日期存储为字符串,而不是日期,但您希望像处理日期一样处理字符串…正确,因为我们的数据库结构是半关系型和半文档型的,稍微更改为使用字段中定义的sortType,但现在可以使用了。
var store = Ext.create('Ext.data.Store', {
     model: 'User',
     sorters: [{
         property: 'age',
         direction: 'DESC',
         sortType: 'asDate'
     }, {
         property: 'firstName',
         direction: 'ASC'
     }],
     proxy: {
         type: 'ajax',
         url: '/echo/json/',
         reader: {
             type: 'json',
             root: 'users'
         },
         encodeSorters: function (sorters) {
             var min = [],
                 length = sorters.length,
                 i = 0;

             for (; i < length; i++) {
                 min[i] = {
                     property: sorters[i].property,
                     direction: sorters[i].direction,
                     sortType: sorters[i].sortType
                 };
             }
             return this.applyEncoding(min);

         }
     }
 });