我正在尝试在 Odoo 16 中构建一个功能,我需要使用密码=“1”来屏蔽特定字段。同时,我想通过使用 widget="CopyClipboardChar" 为该屏蔽字段提供剪贴板复制功能。但是,我很难让两者一起工作。
有人遇到过这个问题并找到解决方案吗?任何见解或解决方法将不胜感激。
您可以将
isPassword
属性从 CopyClipboardChar
传递到 charField
小部件
示例
更改
CopyClipboardChar
组件:
/** @odoo-module **/
import {patch} from "@web/core/utils/patch";
import { registry } from "@web/core/registry";
import { CopyClipboardCharField } from "@web/views/fields/copy_clipboard/copy_clipboard_field"
import { archParseBoolean } from "@web/views/utils";
CopyClipboardCharField.props = {
...CopyClipboardCharField.props,
isPassword: { type: Boolean, optional: true },
};
CopyClipboardCharField.extractProps = ({ attrs, field }) => {
return {
isPassword: archParseBoolean(attrs.password),
};
};
patch(CopyClipboardCharField.prototype, "CopyClipboardCharField.password", {
get isPassword() {
return this.props.isPassword;
}
});
更改
web.CopyClipboardField
模板以使用 isPassword
功能:
<?xml version="1.0" encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-inherit="web.CopyClipboardField" t-inherit-mode="extension" owl="1">
<xpath expr="//Field" position="attributes">
<attribute name="isPassword">isPassword</attribute>
</xpath>
</t>
</templates>
将文件添加到清单文件中:
'assets': {
'web.assets_backend': [
'MODULE_NAME/static/src/js/copy_clipboard_char.js',
'MODULE_NAME/static/src/xml/copy_clipboard_char.xml',
],
},