2

我有一个带有复选框树的 FormPanel,它是在创建时添加的。现在我想更改面板内所有复选框的通用名称模式。根据 DOM,名称已正确更改,但当我提交表单时,仍会提交旧名称。尝试调用 .doLayout 但没有任何运气。有任何想法吗?

changePredicateName: function (panel, predicateName) {
    var ref = this;
    this.counter = 0;
    panel.cascade(function (o) {
        var name = ref.groupId + "." + predicateName + "." + ref.counter + "_value";
        if (o instanceofnExt.form.Checkbox) {
            o.name = name;
            ref.counter++;
        } else if (o.titleCheckbox) {
            o.titleCheckbox.name = name;
            ref.counter++;
        }
        return true;
    });
    panel.doLayout();
},
4

1 回答 1

0

doLayout 仅调整大小/重新排列对象;它不会更改元素名称等属性。为了更改您创建的元素的名称,您需要进行一些 DOM 操作,如下所示(假设o是 Ext.Element):

if (o instanceofnExt.form.Checkbox) {
    o.name = name;
    o.set({ name: name });
    ref.counter++;
} else if (o.titleCheckbox) {
    o.titleCheckbox.name = name;
    o.titleCheckbox.set({ name: name });
    ref.counter++;
}
于 2011-02-27T21:14:00.197 回答