提问人:Boris Veselov 提问时间:10/30/2023 最后编辑:Boris Veselov 更新时间:10/30/2023 访问量:39
使用JavaScript在Odoo中打开弹出窗口
Using JavaScript to open a pop-up window in Odoo
问:
我一直在开发一个自定义的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
有没有办法解决这个错误?在这个过程中,我一定错过了什么。
答: 暂无答案
评论