Js初探
-
最近准备通过js来对oe的页面做一些默认没有的效果,先研究下页面的按钮要怎么样才能调用到js方法;
研究的思路如下:
1、先要让js文件加载到页面;
2、初始化js的对象;
3、按钮的方法要能调用到js的对象的方法;这里有两种路径,一种是页面的按钮经过后台的python方法调用js方法,一种是在页面的按钮上定义onclick事件,直接调用;
碰到的问题如下:
1、通过在__openerp__.py文件中定义js,是可以加载js文件的,但是发现js文件加载到页面后,并没有初始化;
解决办法:
1、经过@深圳-Tommy的提醒,在js中定义的对象,必须和模块名相同;
2、如果要页面的按钮上添加onclick事件,需要在按钮外面包<html>标签。
老规矩,附上代码:
openerp.py中的js文件引入:{...<br /> "installable" : True, # 可否安装 <br /> 'auto_install': False, <br /> "category":u'保险', # 模块类型<br /> 'js': ['static/src/js/syt_insurance222.js',],<br />}
js类定义如下:openerp.syt_insurance = function(instance) {<br /> instance.web.client_actions.add('bt_start', 'instance.syt_insurance.btn_start');<br /> instance.syt_insurance.btn_start = function() {<br /> var self = this;<br /> alert('test');<br /> return false;<br /> };<br />};<br />function aaa(){<br /> alert(123);<br />}<br />
页面调用,通过python方法:<button name="call_js" groups="base.group_erp_manager" string="调用js方法" type="object"/>
页面调用,直接通过onclick:<html><br /> <input type="button" value="获得设备代码" onclick="aaa(this)" class="oe_button oe_form_button_save"/><br /> </html>
python类中定义的方法:def call_js(self, cr, uid, ids,context=None): <br /> context={}<br /> context["key"]="value"<br /> print "call——js..."<br /> ret = {<br /> 'type': 'ir.actions.client',<br /> 'tag': 'bt_start',<br /> 'context': context,<br /> }<br /> return ret