在hasMany关系存储中为Sencha Touch / ExtJS排序数据

时间:2014-03-30 18:30:07

标签: sorting extjs sencha-touch

我目前正试图在应用程序中保留一个有序的商店测量(在音乐意义上)。我正在努力让商店的排序功能起作用。我有一个定义了' index'类别的模型。我的商店也定义如下:

Ext.define('MusicNotationSoftware.store.Measures', {
extend: 'Ext.data.Store',

requires: [
    'Ext.ux.parse.data.proxy.Parse',
    'MusicNotationSoftware.model.Measure'
],

config: {
    model: 'MusicNotationSoftware.model.Measure',
    storeId: 'measuresStore',
    autoLoad: true,
    autoSync: true,
    proxy: {
        type: 'parse',
        url: 'https://api.parse.com/1/classes/Measure'
    },
    sorters: [
        {
            property: 'index',
            direction: 'ASC'
        }
    ],

由于措施属于Voices,我最终会调用

voice.measures()

获取与单个语音相关的所有度量。据我所知,这将返回一个包含所有度量的商店。

我的问题是,当我向商店添加度量时,保持这个度量列表的最佳方法是什么?显然,返回的商店不是上面定义的商店。

3 个答案:

答案 0 :(得分:2)

在Voice中定义度量hasMany关联时,您应该可以在那里设置排序:

hasMany:[
   {
       model:'MusicNotationSoftware.model.Measure',
       name:'measures',
       storeConfig: {
           sorters: [
               { property: 'index', direction: 'ASC' }
           ]
       }
   }
]

或类似。

答案 1 :(得分:0)

您无需为度量定义商店。由于语音存储已经填充了措施,因为措施属于语音。

您所要做的就是致电

 voice.measures().sort('index', 'ASC') 

这将对所有度量记录进行排序,并在索引字段上对它们进行升序排序。

答案 2 :(得分:0)

根据TomW的回答。它应该是storeConfig而不是store。

hasMany:[
   {
       model:'MusicNotationSoftware.model.Measure',
       name:'measures',
       storeConfig :{
           sorters: [
               { property: 'index', direction: 'ASC' }
           ]
       }
   }
]

它对我有用。