我试图在标题按钮(工作流程按钮)上触发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 for button
<header>
<button type="object" class="resume_consultation"
name="testonly"
string="Test Only"/>
</header>
蟒蛇
@api.multi
def testonly(self):
return False
未调用该事件。但我知道FormView中的init
已执行。只是事件不是。
任何人都知道如何为工作流程按钮执行此操作?
答案 0 :(得分:0)
首先在代码后面添加你的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>
之后在xml中添加你的js文件:
class SalePetOrder(models.Model):
_inherit = "xyz"
def java_script(self):
return {"hello": "world"}
ather在你的py文件中定义你的点击事件功能
<data>
<header>
<button name="java_script" string="Java Script" type="object" custom="click"/>
</header>
</data>
在xml中定义你的函数后:
var prodsalesbygender = context.OrderProducts
.GroupBy(op => new
{
Gender = op.Order.Person.Gender
})
.Select(g => new
{
Gender = g.Key.Gender,
Products = g.GroupBy(op => op.Product)
.Select(a => new
{
ProductName = a.Key.Name,
Total = a.Sum(op => op.Qty * op.Product.Price)
})
.OrderBy(a => a.ProductName)
});
foreach (var x in prodsalesbygender)
{
Console.WriteLine(x.Gender);
foreach (var a in x.Products)
Console.WriteLine($"\t{a.ProductName} - {a.Total}");
}
然后在清单 / openerp 文件中定义您的js文件和xml文件。
我希望它可以帮到你。