如何在Odoo 9中执行JS文件中的函数

How to execute a function in JS file in Odoo 9?

本文关键字:JS 文件 函数 执行 Odoo      更新时间:2023-09-26

我已经成功地从Point_of_Salee模块扩展了"PosTicket"模板,并在现有模板中包含了几个字段。我还编写了类似于screen.js中的函数(render_reciept),以获取新添加字段的值。我面临的问题是,我无法调用该函数。如何执行该功能?

这是扩展的模板:

<?xml version="1.0" encoding="UTF-8"?>
<template>
    <t t-extend="PosTicket">
        <t t-jquery=".receipt-orderlines"
           t-operation="before">
       customer name:<t t-esc="customer_name"/>
            <br />
    customer street:<t t-esc="street"/>
            <br />
    customer city:<t t-esc="city"/>
            <br />
        </t>
    </t>
</template>

这是js文件:

odoo.define('custom_module.print_cust_details_pos_bill', function (require) {
    "use strict";
    var core = require('web.core');
    var screens = require('point_of_sale.screens');
    var gui = require('point_of_sale.gui');
    var QWeb = core.qweb;
    var BillScreenWidget = screens.ReceiptScreenWidget.extend({
        template: 'BillScreenWidget',
        show: function(){
        this._super();
        var self = this;
        this.render_receipt();
    },
    render_receipt: function(){
        console.log("Render Reciept funtion called");
        this._super();
        //RKD-Start
        var customer = this.pos.get_order().get_client();
        var street = '';
        var city ='';
        var customer_name='';
        if (customer != undefined)
        {
            customer_name = customer.name;
            street = customer.street;
            city=customer.city;
        }
        this.$('.pos-receipt-container').html(QWeb.render('PosTicket',{
            widget:this,
            order: order,
            receipt: order.export_for_printing(),
            orderlines: order.get_orderlines(),
            paymentlines: order.get_paymentlines(),
            customer_name:customer_name,
            customer_street:street,
            city:city,
        }));
        //RKD-End
        }
    });
    gui.define_screen({name:'receipt', widget: custom_module.BillScreenWidget});
});

您是否尝试将其调用到start中?每当小部件被注入DOM时,它就会被调用,并且看起来像是执行该操作的地方。检查官方文档中的"使用小部件"。