Szeretem a JavaScript-nek gyenge típusosságát. Hihetetlen rugalmassá teszi a benne készült eszközöket, ám mindig megvan a veszély, hogy egyszerű elírás felkutatása is hosszú és fáradságos feladat lehet, miközben más nyelvekben a fordító rögtön kidobja a hibát a típuskülönbségek miatt.
Amikor meglátom a képernyőn a [object Object] felíratot, akkor sejthetően belefutottam egy hasonló problémába. De most nem én, hanem az Toolbar készítői.
Egy eszköztár, benne egy üres elem:
renderTo: Ext.getBody(),
items: [
{xtype:'tbtext', text:''}
]
});
Gyakorlatban hamarabb előjön, mint azt gondolnánk:)
Az elem létrehozásánál csak annyit vizsgáltak, hogy igazat ad-e vissza a text, vagy sem?
Sajnos még az sem segít, ha a TextItem toString függvényét létrehozzuk, mert jelen esetben a t csupán az init config.
A konstruktort nem lehet kényelmesen átírni, így legegyszerűbb, ha fejbevágjuk az egészet:
var s = document.createElement("span");
s.className = "ytb-text";
s.innerHTML = typeof t == "object" ? (t.text || "") : t;
Ext.Toolbar.TextItem.superclass.constructor.call(this, s);
};
Ext.extend(Ext.Toolbar.TextItem, Ext.Toolbar.Item, { enable:Ext.emptyFn, disable:Ext.emptyFn, focus:Ext.emptyFn });
Ext.reg('tbtext', Ext.Toolbar.TextItem);
A fórum egyik topic-jában olvastam, hogy az ExtJS 3-ban teljesen újraírják a Toolbar-t, aminek én különösen örülnék, mert számtalan probléma van vele...