好的,这是一小段代码(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”之间没有区别。)

09-25 22:27