1

我想在特定的销售订单行列中显示一个弹出框,如这里的第一个屏幕截图所示: https ://ibb.co/n0FP1Jf

我试图通过继承 Javascript 类 FieldOne2Many 和 One2ManyListView 来显示弹出框,这个技巧适用于 FormView 继承,但相同的代码不适用于 One2ManyListView,如下面的代码和屏幕截图所示:

使用“FormView”的代码:

odoo.define("saleorderline_on_hover.ListView", function (require) {
"use strict";

    var ListView = require("web.ListView");
    var KanbanView = require("web_kanban.KanbanView");
    var FormView = require("web.FormView");
    var instance = openerp;
    var core = require('web.core');

    FormView.include({
        do_show: function () {
            if (this.dataset.model == 'sale.order'){
                this.$el.find('tr').popover(
                    {
                        'content': function(e){
                            return '<p>SHOW INFORMATION HERE</p>'
                        },
                        'html': true,
                        'placement':  function(c,s){
                            return $(s).position().top < 200?'bottom':'top'
                        },
                        'trigger': 'hover',
                    });
            }
            return this._super();
        }
    });
});

此代码的结果是此处屏幕截图中显示的弹出框:https ://ibb.co/r7bxSzq

相同的代码不适用于“FieldOne2Many”和“One2ManyListView”:

odoo.define("saleorderline_on_hover.ListView", function (require) {
"use strict";

    var ListView = require("web.ListView");
    var KanbanView = require("web_kanban.KanbanView");
    var FormView = require("web.FormView");
    var instance = openerp;
    var core = require('web.core');
        var FieldOne2Many = core.form_widget_registry.get('one2many');

    FieldOne2Many.include({
        init: function() {
        this._super.apply(this, arguments);
        var One2ManyListView = this.x2many_views.list;
        One2ManyListView.include({
        do_show: function () {
        this.x2m.$el.find('tr').popover({'content': function(e){
              return '<p>SHOW INFORMATION HERE</p>'},
                  'html': true,
                        'placement':  function(c,s){
                            return $(s).position().top < 200?'bottom':'top'
                        },
                        'trigger': 'hover',
                    });
            }
            return this._super();}
         });
       }
    });
 });

这里的问题是我无法通过 .find() 方法在 "this.x2m.$el" 中找到 "tr" 或 "td" 元素,或者我遗漏了一些东西,请您就这个问题赐教, 谢谢

4

0 回答 0