使用JsonStore生成组件的Extjs
我需要根据DB中的数据生成复选框组,因此我将这些数据提取到JsonStore中,如下所示:使用JsonStore生成组件的Extjs,extjs,Extjs,我需要根据DB中的数据生成复选框组,因此我将这些数据提取到JsonStore中,如下所示: var itemsInGroup = []; var valuesStore = new Ext.data.JsonStore({ url: '../../data.json', root : 'values', fields: ['id', 'name'], autoLoad: true, listeners: { load: function
var itemsInGroup = [];
var valuesStore = new Ext.data.JsonStore({
url: '../../data.json',
root : 'values',
fields: ['id', 'name'],
autoLoad: true,
listeners: {
load: function(t, records, options) {
for (var i = 0; i < records.length; i++) {
itemsInGroup.push({
name: records[i].name,
inputValue: records[i].name
});
}
}
}
});
valuesStore.load();
但此代码会导致错误。我做错了什么 试试看
itemsInGroup.push({
xtype: 'checkbox',
name: records[i].name,
inputValue: records[i].name
});
您可能需要提供复选框的新实例,而不仅仅是config对象。这将确保构造函数正确初始化对象
此外,还可以使用“checked”属性立即初始化值。我相信它接受布尔真/假值。使用默认类型:“复选框”:
{
id: 'cbGroupId',
xtype: 'checkboxgroup',
fieldLabel: 'Directions',
defaultType: 'checkbox',
items: itemsInGroup
}
和复选框项的boxLabel:
itemsInGroup.push({
name: records[i].name,
inputValue: records[i].name,
boxLabel : records[i].name
});
我想你还有下一个用法:
var itemsInGroup = [];
var valuesStore = new Ext.data.JsonStore(/*...*/);
valuesStore.load();
for(var item in itemsInGroup)
{
// do something with item
}
请求是异步执行的,并且(由于响应需要一些时间才能获取),在处理itemsInGroup
集合后将调用“load”-侦听器
您应该将itemsInGroup
的用法包装到某个方法中,并从load listener调用此方法
var valuesStore = new Ext.data.JsonStore({
listeners: {
load: function(t, records, options) {
var itemsInGroup = [];
for (var i = 0; i < records.length; i++) {
itemsInGroup.push({
name: records[i].name,
inputValue: records[i].name
});
}
processItems(itemsInGroup);
}
}
});
valuesStore.load();
function processItems(items){
for(var item in items){/*...*/}
}
var valuesStore=new Ext.data.JsonStore({
听众:{
加载:功能(t、记录、选项){
var itemsInGroup=[];
对于(var i=0;i
我已经尝试了这些修复,但仍然不起作用。。。实际上,问题似乎是当我将'itemsInGroup'传递给panel checkboxgroup字段时,它仍然是空的。但我不明白为什么…还发现了另一个错误。而不是记录[i]。应该使用记录[i].data.Thank,但它仍然不起作用。似乎呈现了比带有Checkboxgroup的面板更晚的存储火灾的load()。但我不明白为什么。。
var itemsInGroup = [];
var valuesStore = new Ext.data.JsonStore(/*...*/);
valuesStore.load();
for(var item in itemsInGroup)
{
// do something with item
}
var valuesStore = new Ext.data.JsonStore({
listeners: {
load: function(t, records, options) {
var itemsInGroup = [];
for (var i = 0; i < records.length; i++) {
itemsInGroup.push({
name: records[i].name,
inputValue: records[i].name
});
}
processItems(itemsInGroup);
}
}
});
valuesStore.load();
function processItems(items){
for(var item in items){/*...*/}
}