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



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

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

以代理的方式填充Ext.List没有任何问题,首先我声明le模型,然后是代理,最后是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){}}
      });

但我知道我还有另一个需要。我需要从数组Javascript变量填充列表,而不是使用代理,我的意思是

我如何使用

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

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

这是一种动态的方法,不使用静态数据。

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);
    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);功能

我自己还没有测试过这个代码,所以如果它不起作用,请告诉我

最新更新