javascript 将js onclick添加到继承模板中的按钮Odoo 15

5anewei6  于 2022-12-25  发布在  Java
关注(0)|答案(1)|浏览(223)

所以我在模板上加了一个按钮。

<template id="pay_payment_footer_inherit" name="pay_payment_footer_inherit" inherit_id="website_sale.payment_footer">
    <xpath expr="//button[@name='o_payment_submit_button']" position="before">
        <button id="pay_direct_checkout"
                type="button"
                class="btn btn-primary"
                data-icon-class="fa-chevron-right">
             Pay Now<i class="fa fa-chevron-right"/>
        </button>
    </xpath>
</template>

现在我如何给这个按钮添加onclick事件呢?我使用的是odoo15
我试过了

odoo.define('my_module.pay_payment_footer_inherit', function (require) {
    'use strict';
    var Widget = require('web.Widget');

    var Checkout = Widget.extend({
        events: {
            'click #pay_direct_checkout': '_onClick',
        },
        init: function (parent, value) {
            this._super(parent);
        },
        _onClick: function () {
            console.log('_onClick')
        },
    });
});

在文件清单. py中

'assets': {
    'web.assets_frontend': [
        'my_module/static/js/test.js'
    ]
},

但没有成功。

wydwbb8l

wydwbb8l1#

你可以看看

  • odoo-15.0/odoo/addons/purchase/static/src/js/purchase_toaster_button.js,
  • odoo-15.0/odoo/addons/purchase/static/src/xml/purchase_toaster_button.xml,购买程序代码
  • odoo-15.0/odoo/addons/purchase/views/purchase_views.xml

作为例子。
在purxhase_view.xml第195行使用按钮查看详细信息

<div name="reminder" class="o_row" groups='purchase.group_send_reminder' title="Automatically send a confirmation email to the vendor X days before the expected receipt date, asking him to confirm the exact date.">
                                <field name="receipt_reminder_email"/>
                                <span>Ask confirmation</span>
                                <div class="o_row oe_inline" attrs="{'invisible': [('receipt_reminder_email', '=', False)]}">
                                    <field name="reminder_date_before_receipt" class="oe_inline"/>
                                    day(s) before
                                    <widget name='toaster_button' button_name="send_reminder_preview" title="Preview the reminder email by sending it to yourself." attrs="{'invisible': [('id', '=', False)]}"/>
                                </div>
                            </div>

也许你可以试试这个

odoo.define('my_module.pay_payment_footer_inherit', function (require) {
    'use strict';
const widgetRegistry = require('web.widget_registry');
    var Widget = require('web.Widget');

    var Checkout = Widget.extend({
template: 'my_module.pay_payment_footer_inherit',
xmlDependencies: ['/my_module/static/src/xml/pay_payment_footer_inherit.xml'],        
events: {
            'click .fa-chevron-right': '_onClick',
        },
        init: function (parent, value) {
            this._super(parent);
        },
        _onClick: function (ev) {
            console.debug(ev);
        },
    });
 widgetRegistry.add('checkout_button', Checkout);

    return Checkout;
});

请创建基于xml的示例purchase_toaster_button.xml,并在manifest.py中修复:

'assets': {
    'web.assets_backend': [
        'my_module/static/js/pay_payment_footer_inherit.js'
    ],
    'web.assets_qweb': [
        'my_module/static/src/xml/**/*',
    ],
},

相关问题