5
我正在尋找一種方法來覆蓋一些openerp web js核心功能,如「on_logout」。openerp web客戶端6.1:如何覆蓋基本的javascript函數
該文檔缺乏的指令(你可以在my post看到)和helloworld module告訴你,你可以不喜歡它
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);
}
});
};
在我的模塊,我這樣做:
openerp.mytest = function(openerp){
openerp.web.WebClient = openerp.web.WebClient.extend({
on_logout: function() {
alert('mine');
[...]
},
});
}
我知道js已經加載,因爲在此定義之外放置警報有效。
這裏有什麼問題?
嗨,謝謝你的回答。我只是試過這個,但沒有工作。它繼續使用原來的。 FWIW我剛剛推出了最新版本。 – simahawk 2012-01-11 11:13:04
哦,我忘記了這是一個「回調」('on_ *'和'do_ *'方法在'init'期間直接綁定到實例,如果類以某種方式擴展了'openerp.web.CallbackEnabled'),並且在任何模塊被加載之前,'WebClient'被實例化。你唯一的解決方案是使用原始的javascript,並訪問'openerp.webclient'(這個會話的webclient實例,如果有的話)並直接修改它。就像'openerp.webclient.on_logout.add_first(function(){console.log('my logout')});'工作。替換on_logout可能不會起作用,因爲事件受到熱切(一個壞主意)的約束。 – xmo 2012-01-11 12:50:25
我嘗試:openerp.mytest =函數(OpenERP的){ openerp.webclient.on_logout.add_first( '!thatsme' 函數(){ 警報();} );但它似乎也沒用::( – simahawk 2012-01-11 13:57:02