我已经修改odoo网站的js函数。代码如下所示 -odoo JS错误而修改功能,财产“包括未定义
odoo.define('website_custom_menu.menu_custom', function (require) {
'use strict';
require('website.contentMenu');
var EditMenuDialog = require('website.contentMenu').EditMenuDialog;
EditMenuDialog.include({
start: function() {
this._super();
var r = this._super.apply(this, arguments);
this.$('.oe_menu_editor').nestedSortable({
listType: 'ul',
handle: 'div',
items: 'li',
maxLevels: 4,
toleranceElement: '> div',
forcePlaceholderSize: true,
opacity: 0.6,
placeholder: 'oe_menu_placeholder',
tolerance: 'pointer',
attribute: 'data-menu-id',
expression: '()(.+)'
});
return r;
}
});
});
这将修改网站菜单编辑器。在哪里可以编辑放置四个级别的子菜单。但是这在consloe上引发了一个错误。
它说:“故障模块”,而加载它。并在控制台上一些调试后我发现了以下错误:
TypeError: Cannot read property 'include' of undefined at website.assets_editor.js:191 at process_job (web.assets_common.js:2994) at Object.process_jobs (web.assets_common.js:3000) at $.when.then.job.rejected (web.assets_common.js:2995) at web.assets_common.js:547 at fire (web.assets_common.js:541) at Object.add as done at Array. (web.assets_common.js:547) at Function.each (web.assets_common.js:370) at Object. (web.assets_common.js:547)
如何解决这个问题,什么原因造成的?我已经看到其他模块,他们已经以同样的方式做到了。
TBN:该模块具有网站模块的依赖性和js文件在资产增加。
'include'属性未定义而不是EditMenuDialog。在EditMenuDialog中,我调用super并返回'r'。我认为我不需要按照你所展示的方式回归。 –
@卢卡斯是对的。请参阅更新的版本https://github.com/odoo/odoo/blob/10.0/addons/website/static/src/js/website.contentMenu.js – manuthalasseril
VAR contentMenu =需要( 'website.contentMenu'); contentMenu.EditMenuDialog。include({start:function(){}}); – manuthalasseril