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
Javascript extjs:将复选框添加到formpanel:错误状态_Javascript_Extjs - Fatal编程技术网

Javascript extjs:将复选框添加到formpanel:错误状态

Javascript extjs:将复选框添加到formpanel:错误状态,javascript,extjs,Javascript,Extjs,我从Panel中得到了一个,我正在尝试执行以下操作: var linkPanel = new Ext.FormPanel({ ... }); var records = layers_store.getRange(); for(var i = 0; i < records.length; i++) { var layer_checked; console.log(records[i].data); if(records[i].data.checked ==

我从Panel中得到了一个
,我正在尝试执行以下操作:

var linkPanel = new Ext.FormPanel({
    ...
});
var records = layers_store.getRange();
for(var i = 0; i < records.length; i++) {
    var layer_checked;
    console.log(records[i].data);
    if(records[i].data.checked == 'true') {
        layer_checked = true;
    } else {
        layer_checked = false;
    }
    console.log(layer_checked);
    linkPanel.add(new Ext.form.Checkbox({
        boxLabel : records[i].data.layer_name,
        name : records[i].data.layer_name,
        checked : layer_checked,
        handler : ...
        }
    }));
}
这意味着必须取消选中第一个复选框它仍处于选中状态

我做错了什么

编辑

这个答案实际上取决于您使用的ExtJS的版本。我假设这是4.0版本

由于Ext.data.Store的getRange()方法返回一个记录数组,即Ext.data.Model类型的对象,因此您不能像访问简单数组的索引一样访问它的属性

尝试如下方式访问它们:

records[i].get('layer_id'); 
records[i].get('layer_name'); 
records[i].get('checked');

只检查第一个?其余的还好吗?您是否使用复选框作为单选按钮,只选择一个或不选择一个?@sha,不,所有人的问题都是一样的:我在这里使用它只是作为一个例子。复选框是按原样使用的-不像收音机。那么它应该可以工作了:)在添加所有复选框后,尝试记录面板本身-您可以从调试中看到其中的项目。@sha添加了一张图片。。。它似乎是有线的,我不知道它能是什么=)我正在使用3.4版本,而这个更改没有给我任何东西在这种情况下,返回的数组有Ext.data.Record类型的对象,对吗?无论如何,我认为问题存在于代码中您实际上试图获取checked属性的部分。尝试在控制台中调试该值。我已经完成了以下操作:查看我的问题。选中的
变量包含我需要的内容。也许我需要以某种方式刷新表单?不,我认为这不是问题所在,但您可以尝试使用linkedPanel.renderTo(Ext.getBody())。
records[i].get('layer_id'); 
records[i].get('layer_name'); 
records[i].get('checked');