好的,这是一小段代码(ExtJs 4):
var TestA = function() {}
TestA.prototype.createCheckboxes = function() {
var items = [
{boxLabel: "A", inputValue: "A", name: "smthng"},
{boxLabel: "B", inputValue: "B", name: "smthng"}
];
var chgroup = new Ext.form.CheckboxGroup({items:items})
return chgroup;
}
var a = new TestA().createCheckboxes().items.get(0).getManager();
var b = new TestA().createCheckboxes().items.get(0).getManager();
console.log(a, b, a == b)
据我所知,我们正在创建Ext.form.CheckboxGroup的不同实例。但是,检查显示创建的项目正在使用同一管理器。这是故意的,我该如何摆脱这种行为?由于我想让“不同”复选框组互不影响(一种形式的loadRecords影响另一种形式)
最佳答案
这是故意的。 CheckboxManager是一个单例,仅是带有一些包装函数的“ DOM中所有复选框的集合”
要实现所需的功能(一个组中的活动不会影响其他组),您必须确保各个复选框组之间的复选框名称属性是不同的。
即,如果组A具有“ smthng”复选框,则组B可以具有“ smthng else”,但没有“ smthng”。
(从设计的角度来看这也是有意义的,因为如果它们具有相同的名称,则实际上在A组中的“ smthng”和B组中的“ smthng”之间没有区别。)