我试图在标题按钮(工作流程按钮)上触发JavaScript事件。

这是我的js

var _t = instance.web._t, QWeb = instance.web.qweb;

    instance.web.FormView.include({

        init: function() {
            this._super.apply(this, arguments);
        },

        events: {
            "click .resume_consultation": "resume_consultation",
        },

        resume_consultation : function(ev) {
            ev.preventDefault();
            ev.stopPropagation();

        }

    })


按钮的xml

<header>
    <button type="object" class="resume_consultation"
        name="testonly"
        string="Test Only"/>
</header>


蟒蛇

@api.multi
def testonly(self):
    return False


该事件未调用。但是我知道FormView中的init已执行。只是事件不是。

有人知道如何针对工作流程按钮吗?

最佳答案

首先添加以下代码的js文件:

odoo.define('Modulename.filename', function (require) {
"use strict";

var form_widget = require('web.form_widgets');
var core = require('web.core');
var _t = core._t;
var QWeb = core.qweb;

form_widget.WidgetButton.include({
    on_click: function() {
         if(this.node.attrs.custom === "click"){
            //code//
         }
         this._super();
    },
});
});


之后,在xml中添加您的js文件:

<?xml version="1.0" encoding="utf-8"?> <odoo>
        <template id="assets_backend" name="project assets" inherit_id="web.assets_backend">
            <xpath expr="." position="inside">
                         <script type="text/javascript" src="/product_pack/static/src/js/product_pack.js"></script>
            </xpath>
        </template> </odoo>


而是在py文件中定义点击事件功能

class SalePetOrder(models.Model):
    _inherit = "xyz"

    def java_script(self):
        return {"hello": "world"}


在xml中定义函数后:

<data>
   <header>
    <button name="java_script" string="Java Script" type="object" custom="click"/>
   </header>
</data>


是的,在清单/ openerp文件中定义js文件和xml文件。

希望对您有帮助。

10-05 20:50
查看更多