我有一个名为 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
,但什么也没做。
模块 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>
`;