如何在odoo中继承或覆盖js文件?
How to inherit or override js file in odoo?
我想更改 js
文件中的函数。怎么做?有什么方法可以覆盖该功能吗?
addons/web/static/src/js/views/form_common.js
,
我想更改 function-get_search_result: function(search_val){}
dataset.name_search(search_val, self.build_domain(), 'ilike', 160).done(function(_data) {self._search_create_popup("search", _data);}
需要将值 160
更改为其他值
提前致谢
上有一个很好的 answer/example,它提供了一个很好的概述。该示例实际上比全局 JavaScript 更改所需的更深入。
如果您确定了要覆盖的功能,那么这主要只是镜像核心和进行所需覆盖的问题。以下是如何更改 name_search
JavaScript 行为的示例概述:
your_module/清单.py
...
'data': [
...
'views/assets.xml',
...
],
...
your_module/views/assets.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="assets_backend" name="custom assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/your_module/static/src/js/custom.js"></script>
</xpath>
</template>
</data>
</odoo>
your_module/static/src/js/custom.js
odoo.define('your_module.custom_feature', function(require) {
"use strict";
Class = require('web.Class');
mixins = require('web.mixins');
var DataSet = Class.extend(mixins.PropertiesMixin, {
name_search: function (name, domain, operator, limit) {
/* Custom code to override/extend core */
},
});
return {
DataSet: DataSet,
};
});
您可以像他们在 google_calendar
中那样做:
odoo.define('youmodule.yourmodule', function (require) {
"use strict";
var CompletionFieldMixin = require('web.CompletionFieldMixin');
var _t = core._t;
var QWeb = core.qweb;
CompletionFieldMixin.include({
// You need to redefine the function here
});
我想更改 js
文件中的函数。怎么做?有什么方法可以覆盖该功能吗?
addons/web/static/src/js/views/form_common.js
,
我想更改 function-get_search_result: function(search_val){}
dataset.name_search(search_val, self.build_domain(), 'ilike', 160).done(function(_data) {self._search_create_popup("search", _data);}
需要将值 160
更改为其他值
提前致谢
如果您确定了要覆盖的功能,那么这主要只是镜像核心和进行所需覆盖的问题。以下是如何更改 name_search
JavaScript 行为的示例概述:
your_module/清单.py
...
'data': [
...
'views/assets.xml',
...
],
...
your_module/views/assets.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<template id="assets_backend" name="custom assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/your_module/static/src/js/custom.js"></script>
</xpath>
</template>
</data>
</odoo>
your_module/static/src/js/custom.js
odoo.define('your_module.custom_feature', function(require) {
"use strict";
Class = require('web.Class');
mixins = require('web.mixins');
var DataSet = Class.extend(mixins.PropertiesMixin, {
name_search: function (name, domain, operator, limit) {
/* Custom code to override/extend core */
},
});
return {
DataSet: DataSet,
};
});
您可以像他们在 google_calendar
中那样做:
odoo.define('youmodule.yourmodule', function (require) {
"use strict";
var CompletionFieldMixin = require('web.CompletionFieldMixin');
var _t = core._t;
var QWeb = core.qweb;
CompletionFieldMixin.include({
// You need to redefine the function here
});