【问题标题】:Custom store implementing errors自定义商店实施错误
【发布时间】:2016-04-25 07:32:16
【问题描述】:

我正在尝试使用 ExtJS 3.4 实现自定义存储。 我使用 this forum post 和 ExtJS4 版本。

现在我的代码如下所示:

Ext.define('TestStore', {
    extend: 'Ext.data.Store',
    //model: 'TestModel',
    fields: [
        {name: 'date'},
        {name: 'number'},
        {name: 'percent'}
    ],
    storeId: 'TestStore',
    generateData: function() {
        var me = this,
            data = [];
        // generate 10 records
        for( var i=0;i<10;i++) {
            data.push([
                me.randomDate(new Date(2012, 0, 1), new Date()),
                Math.floor( Math.random() * 1000 ),
                ( ( Math.random() * 1000 ) / 3.2 ).toFixed( 1 )
            ]);
        }
        console.log(data);
        return data;
    },
    randomDate: function(start, end) {
        return new Date(
            start.getTime() + Math.random() * (end.getTime() - start.getTime())
        );
    },
    constructor: function() {
        console.log('constructor!');
        var me = this;
        me.superclass.constructor.apply(me, arguments);
        me.loadData(me.generateData(), true);
        //me.add(me.generateData());
    }
});

我看到了这个错误:

TypeError: this.reader is undefined

我的代码中断的部分:

loadData : function(o, append){
    var r = this.reader.readRecords(o); <-------
    this.loadRecords(r, {add: append}, true);
},

如何正确设置阅读器?我想我需要ArrayReader,但我无法正确设置它。我尝试了很多方法...

【问题讨论】:

  • 你为什么不关注documentation
  • @aviram83 该文档始终是开放的,但你帮了我很多! =) 我忽略了一些参数,现在一切正常!

标签: extjs extjs3


【解决方案1】:

ExtJS 3.4 的工作代码:

App.store.documents.documentsRandomStore = Ext.extend(Ext.data.Store, {
reader: new Ext.data.ArrayReader(
    {
        idIndex: 0  // id for each record will be the first element
    },
    //rt // recordType
    Ext.data.Record.create([
        {name: 'date'},
        {name: 'number'},
        {name: 'percent'}
    ])
),
storeId: 'documentsRandomStore',
generateData: function(count) {
    var data = [];
    // generate records
    for(var i=0; i<count; i++) {
        data.push([
            this.randomDate(new Date(2016, 0, 1), new Date()),
            'Документ ' + Math.floor( Math.random() * 100 ),
            ( ( Math.random() * 1000 ) / 3.2 ).toFixed( 1 )
        ]);
    }
    return data;
},
randomDate: function(start, end) {
    return new Date(
        start.getTime() + Math.random() * (end.getTime() - start.getTime())
    );
},
constructor: function(count) {
    App.store.documents.documentsRandomStore.superclass.constructor.apply(this, arguments);
    this.loadData(this.generateData(count));
}
});

【讨论】:

    猜你喜欢
    • 2016-11-12
    • 1970-01-01
    • 1970-01-01
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    相关资源
    最近更新 更多