代码之家  ›  专栏  ›  技术社区  ›  HVH

如何在odoo中继承或重写js文件?

  •  5
  • HVH  · 技术社区  · 6 年前

    我想更改中的函数 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 去别的地方

    提前感谢

    2 回复  |  直到 6 年前
        1
  •  4
  •   Community CDub    6 年前

    有一个很好的答案/例子 this question ,这提供了一个很好的概述。该示例实际上比全局JavaScript更改所需的更深入一些。

    如果您确定了要覆盖的功能,那么主要就是镜像核心并进行所需的覆盖。下面是如何更改 name_search JavaScript行为:

    您的\u模块/ 显示 .py

    ...
    'data': [
        ...
        'views/assets.xml',
        ...
    ],
    ...
    

    您的\u模块/视图/资源。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>
    

    您的\u模块/静态/src/js/自定义。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,
    };
    
    });
    
        2
  •  2
  •   Kenly    6 年前

    你可以像他们在 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
    });