概要
在odoo前端开发中,我们经常遇到这么一个属性t-inherit-mode,其实这个就是odoo前端特有的一个视图继承属性。它的主要作用是控制模板继承时对被继承模板的影响程度。这个属性有两种不同的值(primary和extension),每个值都对应着不同的继承方式和使用场景。
tip:不添加t-inherit-mode属性默认为extension。
使用说明
primary
定义:表示新模板完全取代了父模板。这意味着如果在新模板中没有明确指定某个元素,那么该元素不会包含在最终视图中。
场景:当您想要在某个组件基础上再创建一个带有原始功能的新组建时适用。
例子:比如我有一个组件widget=A,含有一个tree视图的表头粘性功能。现在我想在此组件基础上增加一个显示排序的功能,但是不能影响原来已经绑定好的tree视图,此时就能用primary进行继承视图修改,并且生成一个新的组件widget=B,这样就能在您想要渲染的地方进行B小部件的绑定。

extension
定义:表示允许新模板扩展父模板。新模板的内容将与父模板合并,允许覆盖特定内容并添加新内容。
场景:当您想要修改某个视图的时候,这个属性值能进行视图的继承/覆盖修改,并且此操作会影响到已绑定的视图功能。
例子:比如我有一个组件widget=A,含有一个tree视图的表头粘性功能。现在我不想要这个粘性布局的效果了,那么就可以继承此视图进行修改,此处就不再需要生成新组件,只需要继承原组件进行修改即可。

小结
多写多敲多思考,毕竟,知己知彼才能看懂源码。