【问题标题】:Inherit button functionality in Odoo 10 - Javascript / XML only在 Odoo 10 中继承按钮功能 - 仅限 Javascript / XML
【发布时间】:2017-10-31 12:17:43
【问题描述】:

所以,我在它们自己的模块中创建了一些按钮,它们具有自己的功能。它们确实会显示在 POS 主屏幕上。

我需要稍微改变一下功能 - 仅在打开新模式时才显示这些按钮 - 模态框内呈现的按钮将具有其初始点击功能

(我不懂 Python)

如何继承新模式中的按钮功能,以便让点击事件根据每个按钮的初始定义执行单独的任务?

我尝试使用

   click_me: function(){
     button1.click ......
     button2.click
}

但由于某种原因我无法做到这一点

【问题讨论】:

  • 你到底想做什么,你做了什么来完成你的任务?

标签: javascript odoo-10


【解决方案1】:

首先添加你的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 文件。

希望对你有帮助。

【讨论】:

  • 嗨,Manish,感谢您的回复。我在模态模块中定义了特殊事件,因此具有所需的功能。我会尝试您的建议以供将来参考,并告诉您进展如何
  • 我已经尝试了一些想法并得出了一个神奇的解决方案:) 由于所有的资产都被组合成 Odoo JS 文件的大魔法,那么你所能做的(足够简单)就是创建按钮的事件并分配一个与原始按钮具有的确切操作相同的操作(在主文件中查找操作是唯一棘手的部分),这无需执行所有步骤即可工作。所以 - 创建 XML、xpath、js 和 css 文件,在事件方法的按钮上添加特定的操作,就是这样。没有py,没有额外的步骤
猜你喜欢
  • 2020-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多