第二十九节 DTCloud 4Fields and Views

Fields and Views

字段和视图是Odoo用户界面中最重要的概念之一。它们是许多重要用户交互的关键,因此应该完美地工作。在JavaScript框架的上下文中,字段是专门用于可视化/编辑给定记录的特定字段的组件。例如,(Python)模型可以定义一个char字段,该字段将由字段组件CharField表示。

字段组件基本上只是在字段注册表中注册的组件。字段组件可以定义一些额外的静态键(元数据),如displayName或supportedTypes,以及最重要的一个:extractrops,用于准备CharField接收的基本道具。

简单示例:

CharField的简化实现模板

<t t-name="web.CharField" owl="1">
    <t t-if="props.readonly">
        <span t-esc="formattedValue" />
    </t>
    <t t-else="">
        <input
            class="o_input"
            t-att-type="props.isPassword ? 'password' : 'text'"
            t-att-placeholder="props.placeholder"
            t-on-change="updateValue"
        />
    </t>
</t>

它具有只读模式和编辑模式,这是一个具有一些属性的输入。现在,这里是JavaScript代码:

export class CharField extends Component {
    get formattedValue() {
        return formatChar(this.props.value, { isPassword: this.props.isPassword });
    }

    updateValue(ev) {
        let value = ev.target.value;
        if (this.props.shouldTrim) {
            value = value.trim();
        }
        this.props.update(value);
    }
}

CharField.template = "web.CharField";
CharField.displayName = _lt("Text");
CharField.supportedTypes = ["char"];

CharField.extractProps = ({ attrs, field }) => {
    return {
        shouldTrim: field.trim && !archParseBoolean(attrs.password),
        maxLength: field.size,
        isPassword: archParseBoolean(attrs.password),
        placeholder: attrs.placeholder,
    };
};

registry.category("fields").add("char", CharField);

CharField以道具形式接收其(原始)值。它需要在显示之前对其进行格式化。

它在其道具中接收一个更新功能,字段使用该功能来通知状态的所有者该字段的值已更改。请注意,该字段不(也不应该)保持其值的局部状态。只要应用了更改,它就会通过道具的方式返回(可能是在更改后)。

它定义了一个extractOps函数。这是将特定于视图的通用标准道具转换为对组件有用的专用道具的步骤。这允许组件具有更好的API,并可以使其具有可重用性。

字段必须在字段注册表中注册。一旦完成,就可以通过使用小部件属性在某些视图(即:表单、列表、看板)中使用它们。

<field name="preview_moves" widget="account_resequence_widget"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DTCloud4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值