Вызов из одного виджета в другой виджет с помощью odoo js

Js Xml Путь: имя_модуля-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);
});

Примечание. Я пытался вызвать "widget_2" с помощью js, но не смог получить то, что ожидал. Я не уверен, что это способ вызвать виджет, но я много пробовал. Если у кого-то есть другой способ вызвать 2-й виджет из 1-го виджета с помощью js, дайте мне знать.

С нетерпением жду информации об этой проблеме.

Спасибо.


person sibi    schedule 07.08.2018    source источник


Ответы (1)


вы можете наследовать виджет другому виджету. Например, это может выглядеть так:

// 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;
});
person Mr S Coder    schedule 21.03.2020