這個在 widget.js 還沒有寫到,但應該可以看到很多地方都有這樣寫,
而這裡先講的原因是昨天有先講了 include(),且後續實作時也會用到,
兩者之間本質很像但也有些差異,今天會帶大家了解一下
用 python 來看,您應該會比較理解一些
from odoo import models
class EmployeeAccount(models.Model):
_name = 'employee.account'
_inherit = 'res.users'
這樣是否比較清晰了呢?
因此 extend() 跟 include() 的使用時機大概如下
include() : 修改原本的處理流程,或是覆蓋原本的函式…等,會影響到所有使用到該 widget 的元件
extend() : 增加新的 widget,保有原本的處理流程...等,會影響到目前及之後有繼承自己的 widget
今天一樣不帶各位看底層了
有興趣可以自行尋找對應的程式,位置如下
// addons/web/static/src/js/core/class.js
// ...
OdooClass.extend = function() {
// ...
}