Mam kilka miesięcy doświadczenia w tworzeniu aplikacji internetowej Extjs. Wpadłem na ten problem:Przesłanianie klas Extjs i wywoływanie funkcji callParent
Kiedy nadpisuję klasę, zmodyfikowałem metodę i wykonałem poprzednią implementację i wywołałem callParent()
. Nadrzędna część działa, ale callParent()
odwołał się do starej implementacji.
mój kod nadrzędny
Ext.override(Ext.layout.component.Draw, {
finishedLayout: function (ownerContext) {
console.log("new layouter being overriden");
this.callParent(arguments);
}
});
Metoda klasy ExtJS być przesłonięta:
finishedLayout: function (ownerContext) {
var props = ownerContext.props,
paddingInfo = ownerContext.getPaddingInfo();
console.log("old layouter being overriden");
this.owner.setSurfaceSize(props.contentWidth - paddingInfo.width, props.contentHeight - paddingInfo.height);
this.callParent(arguments);
}
W konsoli, widzę, że pierwsze nowe wydruki Layouter z komunikatem następnie starego Layouter implementacja ... Umieściłem punkt przerwania i odtworzyć stos wywołania, callParent()
nowego layoutera zwanego starym. Muszę wywołać klasę nadrzędną, ale nie metodę nadpisaną.
Każdy pomysł, jak rozwiązać ten problem?
przykro opuszczone wersję z którego korzystałem, używam ExtJs 4.1.2. Wybrana odpowiedź jest poprawna, ale nie mogłem jej użyć, zamiast tego skorzystałem z odpowiedzi udzielonej przez @wantok. –
Nawiasem mówiąc, omijanie jednego z twoich superów to wielki hack, używaj go mądrze i oszczędnie! –