日期:2014-05-16  浏览次数:20897 次

JS 中的变量发生变化,extjs中如何用store重新加载?
本帖最后由 hqgcxy 于 2014-04-28 21:35:49 编辑

JS 中的变量发生变化,ExtJs中store如何重新加载?

*.Html

.......
<script type="text/javascript" src="sm.js"></script>
<script type="text/javascript" >
var arr = new Array();
function ReadCommData(){   
var info = document.getElementById("MyComm").ReadComm(1,0); //从串口读取数据
var temp = info.split("|"); //分离
arr = new Array(temp);  //转换成arrayReader需要的格式
}   
</script>
.........

Sm.js文件

Ext.onReady(function(){    
    Ext.BLANK_IMAGE_URL = '../extjs/resources/images/default/s.gif';
  
var cm = new Ext.grid.ColumnModel({
          {header:'ZL',dataIndex:'zl'},
         {header:'CD',dataIndex:'code'},
         {header:'FCT',dataIndex:'fct'}
})  
var store = new Ext.data.Store({
        proxy: new Ext.data.MemoryProxy(arr),
        reader: new Ext.data.ArrayReader({}, [
            {name: 'zl,'},
            {name: 'code'},
            {name: 'fct'}
        ])
    });
    store.load();

    var grid = new Ext.grid.Grid({
        renderTo: 'grid',
        store: store,
        cm: cm
    });
})

html其他函数调用ReadCommData, 返回的数据,如何添加到grid的store里?
如果将ReadCommData 移到 Ext.Onready({})里面,html其他调用处又找不到相关的函数,这中情况该怎么处理?
------解决方案--------------------
store改为全局变量,在ReadCommData中调用store.loadData加载新数据就行了

window.store = new Ext.data.Store({
        proxy: new Ext.data.MemoryProxy(arr),
        reader: new Ext.data.ArrayReader({}, [
            {name: 'zl,'},
            {name: 'code'},
            {name: 'fct'}
        ])
    });


    function ReadCommData(){   
        var info = document.getElementById("MyComm").ReadComm(1,0); //从串口读取数据
        var temp = info.split("
------解决方案--------------------
"); //分离
        arr = new Array(temp);  //转换成arrayReader需要的格式
store.loadData(arr)