odoo.define('invisible_form_button', function (require) {
"use strict";
const FormController = require('web.FormController');
FormController.include({
updateButtons: function () {
this._super.apply(this, arguments)
var self = this;
var attrs = this.renderer.arch.attrs;
var arrs = ['edit', 'create']
_.each(arrs, function (arr) {
var value = attrs['invisible_' + arr];
if (value) {
var result = self._evalExpression(value)
if (!result) {
self.$buttons.find('.o_form_button_' + arr).show()
} else {
self.$buttons.find('.o_form_button_' + arr).hide()
}
}
})
},
/*下面的函数取自Odoo12一个隐藏form的插件方法, 暂时没研究(可到OCA自行查找)*/
_evalExpression: function (value) {
var tokens = py.tokenize(value);
var tree = py.parse(tokens);
// 去除context后的数据
var evalContent = this.renderer.state.evalContext
// tree(name, expression, value) evaluate
var evaluate_result = py.evaluate(tree, evalContent)
// 返回是否满足写的条件
return py.PY_isTrue(evaluate_result);
}
})
})
Odoo JavaScript隐藏Form表单的创建、编辑按钮
最新推荐文章于 2023-04-20 14:45:08 发布