OE模組中js方法初始化

2021-06-20 02:22:47 字數 626 閱讀 5266

oe模組中都可以自定義js或修改官方的js內容,之前一直不明白自定義的js方法是在**進行初始化的。昨天為了追蹤乙個問題,仔細閱讀了oe的js核心處理指令碼,對自定義模組js的初始化有了乙個初步了解,現記錄如下,以供參考。

假設自定義模組名為「vnsoft」,如果模組需要有js,則在模組中需要定義如下目錄結構:

addons/vnsoft/static/src/js/,js檔名隨便取,假設為data.js

在data.js中,**格式為:

openerp.vnsoft = function(instance);

if (openerp[modules[i]])

}這段就是判斷如果模組名稱是乙個有效的物件,則呼叫此方法,並傳入例項物件作為引數,這裡的 new_instance,就會對應到模組定義中方法的形參instance。這個時候你的自定義方法就執行了,如果對系統核心的方法有擴充套件,這個時候就會生效。

因為這裡modules陣列都是模組的名稱,所以前面我們才說為什麼js中的openerp.vnsoft後面的部分要跟模組名稱一致。

這裡有乙個小疑問就是,上面的if條件只是判斷openerp[modules[i]]有效,並不是判斷物件型別是否為function,正確來講應該只有function型別才是可以執行的。

Nodejs模組初始化

模組初始化 乙個模組中的js 僅在模組第一次被使用時執行一次,並在執行過程中初始化模組的匯出物件。之後,快取起來的匯出物件被重複利用。主模組通過命令列引數傳遞給nodejs以啟動程式的模組被稱為主模組。主模組負責排程組成整個程式的其它模組完成工作。例如通過以下命令啟動程式時,main.js就是主模組...

初始化方法

initialize和load的區別在於 load是只要類所在檔案被引用就會被呼叫,而initialize是在類或者其子類的第乙個方法被呼叫前呼叫。所以如果類沒有被引用進專案,就不會有load呼叫 但即使類檔案被引用進來,但是沒有使用,那麼initialize也不會被呼叫。它們的相同點在於 方法只會...

類初始化 例項初始化 方法重寫

乙個類要建立例項需要先載入並初始化該類 乙個子類要初始化需要先初始化父類 乙個類初始化就是執行 clinit 方法 例項初始化就是執行 init 方法 哪些方法不可以被重寫 物件的多型性 父類 author barrylee 2018年11月10日 下午3 52 33 public class fa...