请问如何执行Ext JS Store数据源更新

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问如何执行Ext JS Store数据源更新相关的知识,希望对你有一定的参考价值。

参考技术A 自己想出来的方法:1.每次打开Panel时从后台取出数据,但是第一次会将数据源缓存,更新数据源时同时更新缓存,这样是一个折中的方案,还是有一次Ajax通信过程2.将此Store作为一个全局的变量,该Store具有扩展属性UpdateTimeStamp(时间戳)和AssociatedStore(MixCollection),在Panel中使用初始化为它的深度复制的副本,并将副本的完整访问名记录在全局Store的AssociatedStore中,在更新数据源时同时对这个全局的Store进行更新,并通过AssociatedStore属性更新关联的副本,这样的话就只有一次Ajax通信上面是我学习ExtJS来遇到的问题和想到的解决办法,如果大家有更好的建议,欢迎大家讨论本回答被提问者采纳

将数据添加到存储后,EXT-JS ui 未更新

【中文标题】将数据添加到存储后,EXT-JS ui 未更新【英文标题】:EXT-JS ui not updating after adding data to store 【发布时间】:2017-03-03 16:31:11 【问题描述】:

我正在尝试在创建后将项目添加到组合框,但添加了存储数据但未在 UI 中更新。

Ext.onReady(function () 

    Ext.create('Ext.data.Store', 
        storeId: 'simpsonsStore',
        autoLoad: true,
        fields: ["name", "value"],


        listeners: 
            load: function(store, rec) 
                store.add([["val1",1],["val2",2]]);
            
        
    );

    Ext.create('Ext.form.field.ComboBox', 
        store: Ext.data.StoreManager.lookup('simpsonsStore'),
        valueField: "value",
        displayField: "name",
        renderTo: Ext.getBody()
    );

    var s2 = Ext.getStore('simpsonsStore');
    s2.loadData([["val3",3]],true);
);

首先添加 Val1 和 Val2。渲染后我想添加 val3

【问题讨论】:

jsfiddle 上的代码:jsfiddle.net/kqpq25hL/11 【参考方案1】:

我认为autoload=true 假设没有数据并且正在鞭打s2.loadData(),它首先被执行。 这在最新版本中不会发生。

在不自动加载的情况下手动调用store.load() 可以解决问题。还有combobox需要queryMode='local'

类似的工作小提琴:http://jsfiddle.net/tonymayoral/8jzfo7zj/1/

var st=Ext.create('Ext.data.Store', 
        storeId: 'simpsonsStore',
        //autoLoad: true,
        fields: ["name", "value"],

        listeners: 
            load: function(store, rec) 
                store.add([["val1",1],["val2",2]]);
            
        
    );

    st.load(); 

    Ext.create('Ext.form.field.ComboBox', 
        store: Ext.data.StoreManager.lookup('simpsonsStore'),
        valueField: "value",
        displayField: "name",
        queryMode:'local', //needs to be local
        renderTo: Ext.getBody()
    );

    var s2 = Ext.getStore('simpsonsStore');
    s2.loadData([["val3",3]],true)

【讨论】:

以上是关于请问如何执行Ext JS Store数据源更新的主要内容,如果未能解决你的问题,请参考以下文章

EXT的Store返回的数据集,如何转换成JS数组对象?

EXT.JS的PROXY放在哪里,STORE放在哪里,绝对是个技术活儿啊。

Ext动态加载Toolbar

Ext JS 5 关于Store load返回json错误信息或异常的处理

关于EXT gridPanel进行高级查询时load提交后台乱码以及其他方式更新store的方法及遇到的问题

如何在不刷新 vue.js 的情况下更新页面上的数据?