Odoo 17 从自定义组件获取属性

问题描述 投票:0回答:1

我有一个名为 my_widget 的自定义组件。我将其添加到表单中:

<field name="my_field" widget="my_widget" depends="field_a, field_b" />

Where dependent 应该从 this.props 中捕获。但并没有发生。

我的实现正在工作,但我需要监听这些字段的更改以更改组件内的值。

export class MyWidgetComponent extend component{
   setup(){
      // Setup
      ...
      console.log(this.props.depends")
   }
}

我已经在使用 Odoo 17。我正在阅读 OWL 文档,但不是很清楚。

我尝试使用

this.props
,但什么也没做。

python odoo odoo-17 odoo-owl
1个回答
0
投票

模块 addons/website/startic/src/components/switch/switch.js 中的类似组件,其中 onchange 函数是从其自定义 xml-TEMPLATE 调用的:

/** @odoo-module **/

const { Component, xml } = owl;

const NO_OP = () => {};

export class Switch extends Component {
    setup() {
        this.extraClasses = this.props.extraClasses ? ` ${this.props.extraClasses}` : '';
    }
}
Switch.props = {
    value: Boolean,
    extraClasses: String,
    disabled: {type: Boolean, optional: true},
    label: {type: String, optional: true},
    onChange: { Function, optional: true },
};
Switch.defaultProps = {
    onChange: NO_OP,
};
Switch.template = xml`
<label t-att-class="'o_switch' + extraClasses">
    <input type="checkbox" t-att-checked="props.value" t-att-disabled="props.disabled" t-on-change="(ev) => props.onChange(ev.target.checked)"/>
    <span/>
    <span t-if="props.label" t-esc="props.label" class="ms-2"/>
</label>
`;
© www.soinside.com 2019 - 2024. All rights reserved.