请问如何执行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.JS的PROXY放在哪里,STORE放在哪里,绝对是个技术活儿啊。
Ext JS 5 关于Store load返回json错误信息或异常的处理