我想在特定的销售订单行列中显示一个弹出框,如这里的第一个屏幕截图所示: 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" 元素,或者我遗漏了一些东西,请您就这个问题赐教, 谢谢