Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用JsonStore生成组件的Extjs_Extjs - Fatal编程技术网

使用JsonStore生成组件的Extjs

使用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

我需要根据DB中的数据生成复选框组,因此我将这些数据提取到JsonStore中,如下所示:

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){/*...*/}
}