使用JavaScript在Odoo中打开弹出窗口

Using JavaScript to open a pop-up window in Odoo

提问人:Boris Veselov 提问时间:10/30/2023 最后编辑:Boris Veselov 更新时间:10/30/2023 访问量:39

问:

我一直在开发一个自定义的Odoo发票模块。我为发票设置了不同的操作:拒绝、批准并附注、重新提交和删除。每个操作都会提示一个向导窗口打开,经理可以在其中留下操作的原因。我在表单视图中设置了以下字段:拒绝原因字段、已批准且注释字段、重新提交注释字段和删除注释字段,您可以在其中查看留下的注释以及所采取不同操作的原因。

我在树视图中创建了一个按钮,称为“注释”按钮。单击此按钮后,将在树视图中打开一个弹出窗口,其他人可以在其中查看经理提交的注释。我创建了一个按钮,我可以单击它。但是单击按钮时出现错误。

我用 JavaScript 构建按钮操作。 这是我的JS代码:

odoo.define('AP.notes_popup', function (require) {
"use strict";

var core = require('web.core');    
var Dialog = require('web.Dialog');    
var AbstractAction = require('web.AbstractAction');    
var rpc = require('web.rpc');
var DisplayNotesPopup = AbstractAction.extend({        
init: function (parent, context) {

this._super(parent, context);            

this.dialog = null;  },
willStart: function () {

return this._super(); },
start: function () {            

var self = this;
rpc.query({ 

model: 'vendor.bill',                 

method: 'action_show_notes',    

 args: [this.context.active_id],            

 }).then(function (result) {               

 var content = "

" + result.notes + "
";
self.dialog = new Dialog(self, {                    

title: "Notes",    size: 'large', $content: content,

 buttons: [{ text: "Close", close: true }], });
 self.dialog.open().on("closed", self, 

function () {                    

self.trigger_up('history_back'); 

}); });
return this._super(); 

}, });

core.action_registry.add('display_notes_popup', DisplayNotesPopup);
return DisplayNotesPopup;});

这是我的 python 代码中的相关部分:

def action_show_notes(self):        

self.ensure_one()        

context = self.env.context.copy()        

context['active_id'] = self.id          

return {           

'name': 'Notes',            

'type': 'ir.actions.client',           

'tag': 'display_notes_popup',            

'target': 'new',            

'context': context, 
}

这是我的xml文件中的按钮定义:

<button name="action_show_notes" string="Notes" type="object" class="oe_highlight"/>

我在点击时收到此错误:

UncaughtPromiseError > OwlError

Uncaught Promise > The following error occurred in onWillStart: "Cannot read properties of undefined (reading 'active_id')"

OwlError: The following error occurred in onWillStart: "Cannot read properties of undefined (reading 'active_id')"

    at wrapError (https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1485:77\)

 \  \ at\ onWillStart\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1491:117\)

 \  \ at\ ClientActionAdapter\.setup\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2695\-8e3fe76/web\.assets_backend\.min\.js:9092:401\)

 \  \ at\ ClientActionAdapter\.setup\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2695\-8e3fe76/web\.assets_backend\.min\.js:6546:105\)

 \  \ at\ ClientActionAdapter\.setup\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2695\-8e3fe76/web\.assets_backend\.min\.js:6560:119\)

 \  \ at\ new\ ComponentNode\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1446:202\)

 \  \ at\ https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1973:6

 \  \ at\ Action\.template\ \(eval\ at\ compile\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1938:370\),\ :10:12\)

 \  \ at\ Fiber\._render\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1384:96\)

 \  \ at\ Fiber\.render\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:1383:6\)



Caused\ by:\ TypeError:\ Cannot\ read\ properties\ of\ undefined\ \(reading\ 'active_id'\)

 \  \ at\ Class\.start\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2695\-8e3fe76/web\.assets_backend\.min\.js:14475:473\)

 \  \ at\ prototype\.\ \[as\ start\]\ \(https://dev\-p2p\.itac\-net\.com/web/assets/2281\-b82364b/web\.assets_common\.min\.js:5642:488\)

 \  \ at\ https://dev-p2p.itac-net.com/web/assets/2281-b82364b/web.assets_common.min.js:5982:52 

有没有办法解决这个错误?在这个过程中,我一定错过了什么。

JavaScript 按钮 Odoo 未定义的 PopupWindow

评论


答: 暂无答案