OWL初识

框架概述:

Odoo Javascript 框架是由 帮助构建在浏览器中运行的 Odoo 应用程序的插件。在 同时,Odoo Javascript 框架是一个单页应用程序, 通常称为 Web 客户端(可在 URL 中找到)。web//web

Web 客户端最初是使用自定义类和小部件创建的应用程序 系统,但现在它正在过渡到使用原生 JavaScript 类, 和 Owl 作为组件系统。这解释了为什么这两个系统目前都处于 在代码库中使用。



组件


一个组件常见的文件目录:
componentName.xml: 组件结构
componentName.js: 组件控制器
componentName.css: 组件样式

现在看一个简单示例: 它维护一个内部数字值,显示它,并在用户单击按钮将数字+1

counter.js

/** @odoo-module **/

import { Component, useState } from "@odoo/owl";

export class Counter extends Component {
    static template = "my_module.Counter";

    setup() {
        this.state = useState({ value: 0 });
    }

    increment() {
        this.state.value++;
    }
}

counter.xml

<templates xml:space="preserve">
   <t t-name="my_module.Counter">
      <p>Counter: <t t-esc="state.value"/></p>
      <button class="btn btn-primary" t-on-click="increment">Increment</button>
   </t>
</templates>






不要忘记在你的 JavaScript 文件头部加上, 否则odoo会无法识别

/** @odoo-module **/

组件交互


常见的组件交互通过props传入子组件内部,子组件通过数据修改相应的状态等


父组件



子组件

子组件js


这是一个简单的示例,展示通过父组件传入的title

props校验
当应用程序变得复杂时,以非正式的方式定义 props 可能非常不安全,所以要通过描述类型熟悉等对传入的数据进行校验



默认Props


如果某项数据十分重要,可以为Props提供默认值

在上面的示例中,props 现在默认设置为 0


生命周期介绍


Owl 组件会经历很多阶段:它可以被实例化、渲染、 挂载、更新、分离、销毁......,这就是组件的生命周期

粗略地说,一个组件被创建,然后更新(可能很多次),然后被销毁。

Owl 提供了多种内置的 hooks 函数, 例如,如果你想在挂载组件时执行一些代码,你可以使用 hook:onMounted

所有钩子函数都以on或use开头, 例如: useState、​ onMounted





赵克晓 2024年10月30日
分析这篇文章

存档
登录 留下评论
会计