Javascript extjs:将复选框添加到formpanel:错误状态
我从Panel中得到了一个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 ==
,我正在尝试执行以下操作:
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');