Odoo 14 中的 OWL - 扩展和修补现有的 OWL 组件。
OWL 组件介绍
OWL 组件与通常的 Odoo JS 类大不相同,它们具有您熟悉的自定义继承系统。
首先它们是ES6 类,如果您不熟悉 ES6 类,可以先学习ES6的内容
ES6 类基本上是 JavaScript 中现有的基于原型的继承的语法糖。在最基本的层面上,ES6 Class
是一个符合基于原型继承的构造函数。ES6 类仍然有 Object.prototype!
基于类和基于原型的继承之间最重要的区别在于,类定义了可以在运行时实例化的类型,而原型本身就是一个对象实例。要使用 Odoo 14 现有的 OWL 组件,先了解一些基本的概念。
class Component {
constructor(name) {
this.name = name;
}render() {
console.log(`${this.name} renders itself.`);
}// Getter/setter methods are supported in classes,
// similar to their ES5 equivalents
get uniqueId() {
return `${this.name}-test`;
}
}
【Odoo 14 中的 OWL - 扩展和修补现有的 OWL 组件。】可以使用关键字继承类
extends
并用 super
调用父函数。class MyBetterComponent extends Component {
constructor(name) {
super(name);
// call the super class constructor and pass in the name parameter
}render() {
console.log(`${this.name} with id ${this.uniqueId} render itslef better.`);
}
}let comp = new MyBetterComponent('MyBetterComponent');
comp.render();
// MyBetterComponent with id
这是标准的 ES6
super
关键字,不要将它与_super
框架内构建的 Odoo函数混淆。Odoo 中 OWL 组件的大部分修补、扩展、覆盖都会用到这些基础知识!
推荐阅读
- 热闹中的孤独
- JS中的各种宽高度定义及其应用
- 我眼中的佛系经纪人
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- Android中的AES加密-下
- 放下心中的偶像包袱吧
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- 如何在Mac中的文件选择框中打开系统隐藏文件夹