ich diese Erweiterung der aktuellen benutzerdefinierten definiert haben Javascript Ansicht in Odoo:Javascript - Anruf Super Eltern Elternteil?
openerp.account_move_journal_test = function(instance){
var _t = instance.web._t,
_lt = instance.web._lt;
var QWeb = instance.web.qweb;
instance.web.account.QuickAddListView.include({
init: function(){
this._super.apply(this, arguments);
console.log("QuickAddListView modified init")
},
});
};
Jetzt bessere Darstellung hinzugefügte E Konsolenprotokoll in QuickAddListView
und in ListView
, die Eltern sind, die _super
genannt verwenden.
Also, wenn ich es so laufen lasse, erhalte ich diesen Druck:
'ListView init' // This is parent of QuickAddListView
'QuickAddListView Init'
'QuickAddListView modified init'
Die Reihenfolge der Konstrukteure ist dieses View
->ListView
->QuickAddListView
So alles das gedruckt wird, wie es sollte , aber was ich will, ist, init
in einer Weise zu ändern, dass es direkt ListView
aufrufen und QuickAddListView
Original überspringen würde.
nach so, dass es nur diese gedruckt werden soll (was bedeutet, original QuickAddListView init hieß nicht):
'ListView init' // This is parent of QuickAddListView
'QuickAddListView modified init'
Gibt es eine Möglichkeit in Javascript genau Elternteil Sie anrufen möchten, angeben? Anstatt also anzurufen, dass alles in einer Kette ist, würde es von wo aus beginnen (wie in meinem Fall von ListView
)?
Zum Beispiel in Python können Sie etwas tun:
from some_module import SomeBaseClass
class CustomBase(SomeBaseClass):
def m1(self):
super(CustomBase, self).m1()
class Custom(CustomBase):
def m1(self):
# skip CustomBase
super(CustomBase, self).m1()
Woher kommt 'this._super'? Dies funktioniert normalerweise nie. – Bergi
@Bergi was meinst du normalerweise funktioniert nie?Es ist in Odoo eingebaut, um für die Vererbung verwendet zu werden, um Vererbung/Erweiterung wie zum Beispiel in einem Python zu imitieren. – Andrius
Ah, [ich sehe] (http://odoo-master.readthedocs.org/en/8.0/howtos/web.html#classes), sollte dann in Ordnung sein. Es funktioniert nur, wenn es bei jedem Methodenaufruf dynamisch festgelegt wird, so wie es von Ihrem Framework bereitgestellt wird. Dieser Ansatz funktioniert nicht mit einer konstanten '_super' in jeder Instanz. – Bergi