想请您帮忙理解 ExtJs4 如何扩展组件并解决以下问题。
我ItemSelector
通过扩展创建了自定义组件Ext.data.Grid
,它具有_aSelectedItems
属性。
Ext.define("Ext.ux.ItemSelector", {
extend: "Ext.grid.Panel",
// @type {Array}
_aSelectedItems: [],
...
getSelectedItems: function() {
return this._aSelectedItems;
},
});
组件
之后,我创建了两个使用ItemSelector
小部件作为项目的组件:
Ext.define("components.Devices", {
extend: "Ext.form.FieldContainer",
_oDevicesSelector: null,
...
_getSelector: function(oConfig) {
if (!this._oDevicesSelector) {
this._oDevicesSelector = new Ext.ux.ItemSelector({
id: oConfig.id,
name: oConfig.name,
flex: 1,
storeUrl: oConfig.storeUrl
});
}
return this._oDevicesSelector;
},
getValue: function() {
return this._getSelector().getSelectedItems();
}
});
和
Ext.define("components.Firmwares", {
extend: "Ext.form.FieldContainer",
_oFirmwaresSelector: null,
...
_getFirmwareSelector: function(oConfig) {
if (!this._oFirmwaresSelector) {
this._oFirmwaresSelector = new Ext.ux.ItemSelector({
id: oConfig.id,
name: oConfig.name,
flex: 1,
storeUrl: oConfig.storeUrl
});
}
return this._oFirmwaresSelector;
},
getValue: function() {
return this._getFirmwareSelector().getSelectedItems();
}
});
ItemSelector
在上面的每个组件中,我创建了through的新实例new
。
形式
我创建了一个表格,然后推components.Firmwares
入components.Devices
其中。一切正常,项目加载正确。
问题
当我选择一些项目components.Devices
并打电话时,getValue()
我会得到下一个结果:
console.log( this.getDevicesSelector().getValue() );
// ["7885"] - it's OK
console.log( this.getFirmwaresSelector().getValue() );
// ["7885"] - but this array should be empty,
// 'cause I didn't select any items in components.Firmwares selector
谁能帮助我理解这种行为以及如何解决它?
真的提前感谢您的帮助。