基于内部JSON字段sencha对商店数据进行排序

时间:2014-04-11 11:21:36

标签: json sorting extjs model store

我有一个以下格式的json:

{
 "collection": [
 {
  "id": 4, 
  "tickets": [
      {
        "price": 40,
      },
      {
        "price": 50,
      }
    ],
  },
  {
  "id": 1, 
  "tickets": [
      {
        "price": 10,
      },
      {
        "price": 15,
      }
    ]
  },
 ]
}

商店:

Ext.define("myProject.store.ABCs", {
extend: "Ext.data.Store",
config: {
    model: "myProject.model.ABC",
    autoLoad: false,            
    proxy: {
        type: "ajax",
        url: '',  //myURL
        reader: {
            type: "json",
            rootProperty: "collection",   // this is the first collection
        },
    },

 }
});

对于这个特殊的JSON,我创建了模型:

Ext.define("myProject.model.ABC", {
extend: "Ext.data.Model",
config: {
    idProperty: "id",
    fields:[
        {name: "id", type: "int" },
    ],
    hasMany: [
        {
            model: "myProject.model.XYZ",
            name: "tickets",
            associationKey: "tickets",
        },
    ],
  }
});

第二个模型为:

Ext.define("myProject.model.XYZ", {
extend: "Ext.data.Model",
config: {
    // idProperty: "id",
    fields:[
     {name: "inner_id", type: "int" },

    ],
     belongsTo: 'myProject.model.ABC'
 }
});

此特定代码创建商店并正确填充模型。

var store = Ext.getStore('ABCs');

现在我想根据store.tickets()。getAt(0).get(' price')对这个商店进行排序,这是根据XYZ的第一个价格属性对ABC记录进行排序。

在上面的json中。 ABC唱片将是:[{id:4},{id:1}] 但是由于XYZ中的第一个价格(40> 10),我想对它们进行排序并创建[{id:1},{id:4}]

1 个答案:

答案 0 :(得分:0)

查看Ext.util.Sorter类,您可以在其中设置 sorterFn 。请参阅页面顶部的示例 - 您应该能够按照描述的方式编写用于对记录进行排序的逻辑。