【发布时间】:2017-06-15 15:51:48
【问题描述】:
我不明白这里发生了什么,但我无法访问某些 Odoo 视图。特别是,我需要访问gantt 视图。
所以运行这个
odoo.define('mymodule.myWidgetName', function (require) {
"use strict";
var core = require('web.core');
var data_manager = require('web.data_manager');
console.log('list ' + core.view_registry.get('list'));
console.log('calendar ' + core.view_registry.get('calendar'));
console.log('diagram ' + core.view_registry.get('diagram'));
console.log('form ' + core.view_registry.get('form'));
console.log('graph ' + core.view_registry.get('graph'));
console.log('grid ' + core.view_registry.get('grid'));
console.log('kanban ' + core.view_registry.get('kanban'));
console.log('gantt ' + core.view_registry.get('gantt'));
console.log('tree' + core.view_registry.get('tree'));
console.log('many2many_kanban ' + core.view_registry.get('many2many_kanban'));
console.log('one2many_kanban '+ core.view_registry.get('one2many_kanban'));
console.log('pivot ' + core.view_registry.get('pivot'));
});
日志输出是这样的:
list function Class(){if(this.constructor!==OdooClass){throw new Error("You can only instanciate objects with the 'new' operator");}
this._super=null;if(!initializing&&this.init){var ret=this.init.apply(this,arguments);if(ret){return ret;}}
return this;}
web.assets_backend.js:3126 calendar undefined
web.assets_backend.js:3126 diagram undefined
web.assets_backend.js:3126 form function Class(){if(this.constructor!==OdooClass){throw new Error("You can only instanciate objects with the 'new' operator");}
this._super=null;if(!initializing&&this.init){var ret=this.init.apply(this,arguments);if(ret){return ret;}}
return this;}
web.assets_backend.js:3126 graph function Class(){if(this.constructor!==OdooClass){throw new Error("You can only instanciate objects with the 'new' operator");}
this._super=null;if(!initializing&&this.init){var ret=this.init.apply(this,arguments);if(ret){return ret;}}
return this;}
web.assets_backend.js:3126 grid function Class(){if(this.constructor!==OdooClass){throw new Error("You can only instanciate objects with the 'new' operator");}
this._super=null;if(!initializing&&this.init){var ret=this.init.apply(this,arguments);if(ret){return ret;}}
return this;}
web.assets_backend.js:3126 kanban undefined
web.assets_backend.js:3126 gantt undefined
web.assets_backend.js:3126 tree function Class(){if(this.constructor!==OdooClass){throw new Error("You can only instanciate objects with the 'new' operator");}
this._super=null;if(!initializing&&this.init){var ret=this.init.apply(this,arguments);if(ret){return ret;}}
return this;}
web.assets_backend.js:3126 many2many_kanban undefined
web.assets_backend.js:3126 one2many_kanban undefined
web.assets_backend.js:3126 pivot function Class(){if(this.constructor!==OdooClass){throw new Error("You can only instanciate objects with the 'new' operator");}
this._super=null;if(!initializing&&this.init){var ret=this.init.apply(this,arguments);if(ret){return ret;}}
return this;}
正如您从日志中看到的那样,gantt 或 kanban 之类的视图是未定义的。虽然如果我登录console.log(core.view_registry.map))。我可以看到他们每个人都有他们的构造值 - 我的意思是看起来每个视图都被定义了..
所以core.view.registry.map 日志输出如下:
正如您所见,有些视图是未定义的,即使我看到它们已在那里注册并且应该可以访问。如果我console.log(core.view_registry.map)
它返回:
calendar: function Class()
diagram: function Class()
form: function Class()
gantt: function Class()
graph: function Class()
grid: function Class()
kanban: function Class()
list: function Class()
many2many_kanban: function Class()
one2many_kanban: function Class()
pivot: function Class()
tree: function Class()
如您所见,每个键都有其构造。那么为什么有些是未定义的呢?..
那么这里到底发生了什么?我在这里漏掉了一些问题吗?
如果在这种情况下依赖关系很重要,我的模块同时依赖于web 和web_gantt(它定义了gantt 视图,尽管我猜无论如何应该只需要web_gantt 作为依赖关系)。
还研究了gantt 视图是如何定义的:
core.view_registry.add('gantt', GanttView);
return GanttView;
看起来应该很简单,我应该可以访问GanttView,但由于某种原因我不能..
【问题讨论】:
标签: javascript openerp odoo-10