OE模块中js方法初始化
2014-01-22 17:57
225 查看
OE模块中都可以自定义js或修改官方的js内容,之前一直不明白自定义的js方法是在哪里进行初始化的。昨天为了追踪一个问题,仔细阅读了oe的js核心处理脚本,对自定义模块js的初始化有了一个初步了解,现记录如下,以供参考。
假设自定义模块名为“vnsoft”,如果模块需要有js,则在模块中需要定义如下目录结构:
addons/vnsoft/static/src/js/ js文件名随便取,假设为data.js
在data.js中,代码格式为:
openerp.vnsoft = function(instance){
--自定义js内容
}
其中openerp.vnsoft中的"vnsoft"就是模块名称,这两者要一致,不然无法初始化。
js文件建立好以后,需要告诉openerp在启动时加载,这个是在模块的__openerp__.py文件中定义,如:
{
'js' : ["static/src/js/data.js"],
}
OE在启动时,如果模块有安装,则会加载指定的js文件内容,但这个时候还只是加载了一个定义,并没有初始化。初始化动作是在addons/web/static/src/js/boot.js中处理的,其中有一段代码如下:
for(var i=0; i < modules.length; i++) {
new_instance[modules[i]] = {};
if (openerp[modules[i]]) {
openerp[modules[i]](new_instance,new_instance[modules[i]]);
}
}
这段就是判断如果模块名称是一个有效的对象,则调用此方法,并传入实例对象作为参数,这里的 new_instance,就会对应到模块定义中方法的形参instance。这个时候你的自定义方法就执行了,如果对系统内核的方法有扩展,这个时候就会生效。
因为这里modules数组都是模块的名称,所以前面我们才说为什么js中的openerp.vnsoft后面的部分要跟模块名称一致。
这里有一个小疑问就是,上面的if条件只是判断openerp[modules[i]]有效,并不是判断对象类型是否为function,正确来讲应该只有function类型才是可以执行的。
原文;http://blog.csdn.net/vnsoft/article/details/17953641
假设自定义模块名为“vnsoft”,如果模块需要有js,则在模块中需要定义如下目录结构:
addons/vnsoft/static/src/js/ js文件名随便取,假设为data.js
在data.js中,代码格式为:
openerp.vnsoft = function(instance){
--自定义js内容
}
其中openerp.vnsoft中的"vnsoft"就是模块名称,这两者要一致,不然无法初始化。
js文件建立好以后,需要告诉openerp在启动时加载,这个是在模块的__openerp__.py文件中定义,如:
{
'js' : ["static/src/js/data.js"],
}
OE在启动时,如果模块有安装,则会加载指定的js文件内容,但这个时候还只是加载了一个定义,并没有初始化。初始化动作是在addons/web/static/src/js/boot.js中处理的,其中有一段代码如下:
for(var i=0; i < modules.length; i++) {
new_instance[modules[i]] = {};
if (openerp[modules[i]]) {
openerp[modules[i]](new_instance,new_instance[modules[i]]);
}
}
这段就是判断如果模块名称是一个有效的对象,则调用此方法,并传入实例对象作为参数,这里的 new_instance,就会对应到模块定义中方法的形参instance。这个时候你的自定义方法就执行了,如果对系统内核的方法有扩展,这个时候就会生效。
因为这里modules数组都是模块的名称,所以前面我们才说为什么js中的openerp.vnsoft后面的部分要跟模块名称一致。
这里有一个小疑问就是,上面的if条件只是判断openerp[modules[i]]有效,并不是判断对象类型是否为function,正确来讲应该只有function类型才是可以执行的。
原文;http://blog.csdn.net/vnsoft/article/details/17953641
相关文章推荐
- Python动态类型的学习---引用的理解
- 垃圾邮件过滤器 python简单实现
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- OpenERP v6.1新特性解读 (一)整体易用性、界面、移动性
- OpenERP v6.1新特性解读 (三) 技术
- OpenERP 的XML-RPC的实例+many2many,one2many,many2one...
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- Python,Flex 2和Aptana[js开放工具]
- 国外开发者谈为何放弃PHP而改用Python
- 利用webqq协议使用python登录qq发消息源码参考
- python 判断自定义对象类型