使用odoo js从一个小部件调用到另一个小部件

时间:2018-08-07 05:47:13

标签: odoo-8 odoo-10 odoo-9 odoo-11

Js Xml 路径:module_name-static-src-xml:

    <div t-name="widget_1">
       <button type="button" id = "button_1" >Click</button>
      <div id = "test"> </div>
   </div>
   <div t-name="widget_2">
        <p>Second Widget</p>
   </div>

JS:

odoo.define("module_name.name", function(require) {
    "use strict";

 var Widget = require("web.Widget");

    var Widget_Extend = Widget.extend({
        template: "widget_1",

        start: function() {
             var self = this;
             $(document).ready(function(){
                   setTimeout(function(){
                        $(document).on("click", "#button_1", function() {
                            var widget_call = '';
                            widget_call = '<div id ="test"></div>'
                            widget_call + = '<t t-call="widget_2"/>'
                            $('#test').html(widget_call);
                        });
                   });
             });
        }
    });

 core.action_registry.add("module_name.name", Widget_Extend);
});

注意: 我尝试使用js调用“ widget_2”,但无法获得期望的结果。我不确定这种调用小部件的方式,但是我已经尝试了很多。如果有人有其他方法可以使用js从第一部件调用第二部件,请告诉我。

预期有关此问题的所有信息。

谢谢。

1 个答案:

答案 0 :(得分:0)

您可以将一个窗口小部件继承到另一个窗口小部件,例如,如下所示:

// in file a.js
odoo.define('module.A', function (require) {
    "use strict";

    var A = ...;

    return A;
});

// in file b.js
odoo.define('module.B', function (require) {
    "use strict";

    var A = require('module.A');

    var B = ...; // something that involves A

    return B;
});