gpt4 book ai didi

javascript - Odoo10 Javascript 小部件操作不起作用 : ClientWidget is not a function

转载 作者:行者123 更新时间:2023-11-30 07:54:00 24 4
gpt4 key购买 nike

我仍在学习如何正确添加您自己的 javascript 代码。我正在尝试将我自己的东西添加到 Odoo 后端。

我仔细阅读了“构建接口(interface)扩展”指南(https://www.odoo.com/documentation/10.0/howtos/web.html),但它非常不准确或完全过时。

在查看 Odoo 官方模块(如帐户、项目、CRM)后,我编写了如下代码:

odoo.define('rhp.main', function (require) {
"use strict";

var core = require('web.core');
var _t = core._t;
var _lt = core._lt;
var Widget = require('web.Widget');
var QWeb = core.qweb;

var Explorer = Widget.extend({
init: function(parent, options) {
console.log('Explorer inited');
},
start: function() {
console.log('Explorer started');
},
});

/* NONE OF THESE WORK OK */
//core.view_registry.add('exploreraction', Explorer);
//core.action_registry.add('exploreraction', function() { return new Explorer(); });
core.action_registry.add('exploreraction', 'rhp.main.Explorer');
//odoo.client_actions.add('exploreraction', Explorer);

/* "Main loaded" is successfully printed in console */
console.log("Main loaded");

return {
Explorer: Explorer,
};

});

我的模块 xml 数据:

<record id="explorer_action" model="ir.actions.client">
<field name="name">Document Explorer</field>
<field name="tag">exploreraction</field>
<field name="target">main</field>
</record>

<menuitem name="Documents" id="main_docs" />
<menuitem name="Document Explorer" id="rhp_explorer" parent="rhp.main_docs" action="rhp.explorer_action"/>

这是我最新的代码,当我点击菜单项时没有任何反应,我得到这个弹出错误:

TypeError: ClientWidget is not a function

此处粘贴回溯 https://pastebin.com/QLCaLwHC

=========================================

编辑:

我添加了模板,就像 Vishal Khichadiya 的例子一样:

<t t-name="exploreraction" >
<div id="exploreraction_div">
test
</div>
</t>

现在以这种方式添加 Action :

core.action_registry.add('exploreraction', Explorer);

现在,当我导航到我的菜单项时,我现在收到此错误:

TypeError: this.__getterSetterInternalMap is undefined

此处的新追溯:https://pastebin.com/phrqXFkz

最佳答案

我也是 Odoo 和 JS 的新手,我尝试了一些东西,如下所示:

    In your /static/src/js/your_.js file, add the code:

odoo.define('zbtoken.map', function (require) {
"use strict";

var Widget = require('web.Widget');
var core = require('web.core');
var utils = require('web.utils');


var HomePage = Widget.extend({
template: "HelloJS",

init: function(parent) {
this._super(parent);
console.log("Hello JS, I'm inside of init.");
},


start: function() {
console.log("Hello JS, I'm inside of start.");
},
});

core.action_registry.add('HelloJS', HomePage);

return HomePage;
});

在你的/static/src/xml/your_.xml 文件中:

    <?xml version="1.0"  encoding="UTF-8"?>
<templates xml:space="preserve">
<t t-name="HelloJS">
<div> </div>
</t>
</templates>

在您的/views/your_.xml 文件中:

   <?xml version="1.0" encoding="UTF-8"?>
<odoo>
<data>

<template id="assets_backend" name="petstore"
inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript"
src="/your_module_name/static/src/js/your_js_file.js">
</script>
</xpath>
</template>

<record id="hellojs_id" model="ir.actions.client">
<field name="name">HelloJS</field>
<field name="tag">HelloJS</field>
</record>
<menuitem id="hellojs_menu"
name="HelloJS"
action="hellojs_id"/>
</data>
</odoo>

list .py 中:

     'data': [ 
'views/your_.xml file',
],

'qweb': ['static/src/xml/your_.xml file'],

它会起作用的。请尝试一下。

关于javascript - Odoo10 Javascript 小部件操作不起作用 : ClientWidget is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45351011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com