ExtJs4 がコンポーネントを拡張し、以下の問題を解決する方法を理解するために、あなたの助けを求めたいと思います。
プロパティを持つ をItemSelector
拡張してカスタム コンポーネントを作成しました。Ext.data.Grid
_aSelectedItems
Ext.define("Ext.ux.ItemSelector", {
extend: "Ext.grid.Panel",
// @type {Array}
_aSelectedItems: [],
...
getSelectedItems: function() {
return this._aSelectedItems;
},
});
コンポーネント
その後、ItemSelector
ウィジェットをアイテムとして使用する 2 つのコンポーネントを作成しました。
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
そのような動作とそれを修正する方法を理解するのを手伝ってくれる人はいますか?
助けてくれて本当にありがとう。