Sto cercando un modo per sovrascrivere alcune funzioni di base di jav web openerp come "on_logout".client web openerp 6.1: come sovrascrivere le funzioni javascript di base
La docs mancanza di istruzioni (come si può vedere in my post) e il helloworld module ti dice che si può fare come
openerp.web_hello = function(openerp) {
openerp.web.SearchView = openerp.web.SearchView.extend({
init:function() {
this._super.apply(this,arguments);
this.on_search.add(function(){console.log('hello');});
}
});
// here you may tweak globals object, if any, and play with on_* or do_* callbacks on them
openerp.web.Login = openerp.web.Login.extend({
start: function() {
console.log('Hello there');
this._super.apply(this,arguments);
}
});
};
Nel mio modulo sto facendo questo:
openerp.mytest = function(openerp){
openerp.web.WebClient = openerp.web.WebClient.extend({
on_logout: function() {
alert('mine');
[...]
},
});
}
So che js è caricato da quando un avviso fuori da questa definizione funziona.
Cosa c'è che non va qui?
Ciao, grazie per aver risposto. Ho appena provato questo, ma non funziona. Continua a usare quello originale. FWIW Ho appena estratto l'ultima versione. – simahawk
Oh diavolo, avevo dimenticato che si trattava di un "callback" (i metodi 'on_ *' e 'do_ *' sono legati direttamente alle istanze durante 'init' se la classe estende in qualche modo' openerp.web.CallbackEnabled '), e 'WebClient' viene istanziato prima di caricare qualsiasi modulo. La tua unica soluzione è usare javascript raw e accedere a 'openerp.webclient' (l'istanza del webclient per questa sessione, se presente) e modificarlo direttamente. Qualcosa come "openerp.webclient.on_logout.add_first (function() {console.log ('my logout')});' funziona. Sostituire on_logout probabilmente non funzionerà perché gli eventi sono legati con entusiasmo (una cattiva idea). – xmo
Ho provato: openerp.mytest = function (OpenERP) { openerp.webclient.on_logout.add_first ('! Thatsme' function() { alert();} ); } ma sembra inutile :( – simahawk