Sencha Touch 1.1。我需要从Array Javascript变量而不是代理填充Ext.List对象

时间:2012-03-15 15:41:26

标签: sencha-touch extjs

我在sencha touch 1.1工作,特别是使用Ext.List。但是我没有使用代理来填充Ext.List对象,而是需要直接从数组javascript变量加载数据,如

var = [["1","Ángel Quezada"],["2","Christian Herrera"],["3","Francisco Quispe"]]

我在代理方式中填充Ext.List没有任何问题,首先我声明了le model,然后是代理,最后是List。根据下一行。

    Ext.regModel('Cronograma', {
        idProperty: 'nrocuota', 
        fields: [{name:'nrocuota', type: 'string'}]
    });

    Ext.regStore('CronogramaStore', {
        model: 'Cronograma',
        proxy: {
            type :'ajax',
            url: '/mSAS/cotizacion.do?method=generarCronograma',
            reader: {type:'array'}
        }
    });

    this.grdCronograma = new Ext.List({
            id: 'notesList',
            store: 'CronogramaStore',
            emptyText: 'No existe resultado ',              
            itemTpl: '{nrocuota}',
            listeners: {'render':function(thisComponent){}}
      });

但是知道我还有其他需要。我需要从Array Javascript变量填充List,而不是使用代理,我的意思是

我该如何使用

var varArray = [["1","Ángel Quezada"],["2","Christian Herrera"],["3","Francisco Quispe"]]

填充Ext.List,我想有一种方法可以使用Ext.data.Store及其加载方法。但是我找不到它。

2 个答案:

答案 0 :(得分:0)

这是动态的方式,不使用静态数据。

Ext.regModel('Cronograma', {
    idProperty: 'nrocuota', 
    fields: [{name:'nrocuota', type: 'string'}]
});

Ext.regStore('CronogramaStore', {
    model: 'Cronograma'/*,
    data : [
        { nrocuota : 'Ángel Quezada' },
        { nrocuota : 'Christian Herrera' },
        { nrocuota : 'Francisco Quispe' }] */  // Does not take array [[],[],[]] that was specified in problem statement
});

this.grdCronograma = new Ext.List({
        id: 'notesList',
        store: 'CronogramaStore',
        emptyText: 'No existe resultado ',              
        itemTpl: '{nrocuota}',
        listeners: {'render':function(thisComponent){}}
  });

//这是动态方法。

function addToList(data){
    var len = data.length;
    for(var i=0;i<len;i++){
        var note = Ext.ModelMgr.create({
            nrocuota: data[i][1],    //grab only name from the array
        }, 'Cronograma');
        CronogramaStore.add(note);
        CronogramaStore.sync();
    }
}

//现在只需调用函数

var data = [["1","Ángel Quezada"],["2","Christian Herrera"],["3","Francisco Quispe"]];
addToList(data);

答案 1 :(得分:-1)

    Ext.regModel('Cronograma', {
        idProperty: 'nrocuota', 
        fields: [{name:'nrocuota', type: 'string'}]
    });

    Ext.regStore('CronogramaStore', {
        model: 'Cronograma',
        data : [
            { nrocuota : 'Ángel Quezada' },
            { nrocuota : 'Christian Herrera' },
            { nrocuota : 'Francisco Quispe' }
        ]
    });

    this.grdCronograma = new Ext.List({
            id: 'notesList',
            store: 'CronogramaStore',
            emptyText: 'No existe resultado ',              
            itemTpl: '{nrocuota}',
            listeners: {'render':function(thisComponent){}}
      });

更新以使用数组而不是json对象:

    Ext.regModel('Cronograma', {
        idProperty: 'id', 
        fields: [ 'id', 'nrocuota' ]
    });

    var data = [["1","Ángel Quezada"],["2","Christian Herrera"],["3","Francisco Quispe"]];
    Ext.regStore('CronogramaStore', {
        model: 'Cronograma',
        data : data
    });

    this.grdCronograma = new Ext.List({
            id: 'notesList',
            store: 'CronogramaStore',
            emptyText: 'No existe resultado ',              
            itemTpl: '{nrocuota}',
            listeners: {'render':function(thisComponent){}}
      });

或已经表明如果您在创建商店时没有可用数据,请使用store.loadData(data);功能

我自己没有测试过这段代码,如果它不能正常工作那么请告诉我