1

我正在尝试使用 useService Hook 使用 setup 方法注册一个 act_window ,但它不起作用。

这是我的组件。

    /** @odoo-module **/
    // const { useState, useRef } = owl.hooks;
    import { useEffect, useService } from "@web/core/utils/hooks";
    import AbstractField from 'web.AbstractFieldOwl'
    import { _lt } from 'web.translation';
    
    class ReferenceButtonWidget extends AbstractField {
    
      setup() {
        // super.setup(...arguments);
        this.actionService = useService('action')  // <----------------- ERROR
      }
    
      onClick() {
        console.log(this.value);
      }
    }
    
    ReferenceButtonWidget.description = _lt("Reference");
    ReferenceButtonWidget.supportedFieldTypes = ['reference'];
    ReferenceButtonWidget.template = 'iqba_document.reference_button_widget';
    
    
    const registry = require('web.field_registry_owl');
    
    registry.add('reference_button_widget', ReferenceButtonWidget)

如果我评论this.actionService = useService('action')行,我的组件渲染正常。

如果此时我暂停执行,则只有以下服务可用:

浏览器调试控制台

我究竟做错了什么?谢谢

现在我用它来调用一个动作:

    this.__owl__.parent.parentWidget.do_action({
            type: 'ir.actions.act_window',
            res_model: this.value.model,
            res_id: this.value.res_id,
            views: [[false, 'form']],
            target: 'new'
          })

4

0 回答 0