2016-04-25 2 views
0

Я пытаюсь реализовать собственный магазин с помощью 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, но я не могу установить его правильно. Я пытался так много способов ...

+1

почему вы не следуете [документации] (http://docs.sencha.com/extjs/3.4.0/ #!/апи/Ext.data.Store)? – aviram83

+0

@ aviram83 Эта документация всегда открыта, но вы мне очень помогли! =) Я пропустил некоторые параметры, и теперь все работает отлично! – Sogl

+0

рад помочь :) – aviram83

ответ

0

Рабочий код для 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)); 
} 
}); 
Смежные вопросы