最近用EXTJS写的一个页面,想实现按钮级别的权限控制,所以用了动态加载的按钮,结果从后台取得的按钮可以显示出来,但是按钮的handler方法不能被执行,在IE中提示错误为“对象不支持此属性或方法”,在FF中提示错误为“this.handler.call is not a function ”下面是相关代码:
js函数---
//新增窗口 ,工具条按钮回调函数
showAddcomp=function(){
Ext.getCmp("EmpForm").form.reset(); //重置表单
//EmpForm.form.isJunk.setvalue('2');
Ext.getCmp("EmpForm").isAdd=true; //设置ISADD附加属性为真
Ext.getCmp("AddEmpWin").setTitle("新增设备信息")
Ext.getCmp("AddEmpWin").show();
}
//编辑窗口
showEditcomp=function(){
Ext.getCmp("EmpForm").form.reset(); //重置表单
Ext.getCmp("EmpForm").isAdd=false; //设置ISADD附加属性为假
var sel=Ext.getCmp("grid_1").getSelectionModel().getSelected();//取得选中的行对应的record
loadForm(sel.get('Id'));//调用加载表单数据函数
Ext.getCmp("AddEmpWin").show();
Ext.getCmp("AddEmpWin").setTitle("修改设备信息")
}
//动态加载工具条中的按钮
SetToolButtons=function(tbr) {
Ext.Ajax.request({
url: 'computer1_getButton.do',
params: '',
method: 'POST',
success: function(response, options){
var rsp = Ext.util.JSON.decode(response.responseText);
var total = rsp.totalProperty;
var arrays = new Array(total);
for (var i = 0; i < total; i++) {
arrays[i] = new Ext.Toolbar.Button({ text: rsp.result[i].text, iconCls: rsp.result[i].iconCls,handler: rsp.result[i].handler,tooltip: rsp.result[i].tooltip});
alert(rsp.result[i].handler);
}
tbr.add(arrays);
tbr.addFill();//加入一个充满工具栏的空白元素
//tbr.addSeparator();//加入工具栏分割符
tbr.doLayout(); //让工具栏更新布局,解决了在表格渲染时不显示的问题
},
failure: function() {
Ext.Msg.alert("提示信息", "按钮加载失败,请稍后重试!");
}
});
}
EXTJS控件区---
Ext.onReady(function(){
Ext.QuickTips.init();
Ext.form.Field.prototype.msgTarget='side';//统一指定错误信息的提示方式
//生成工具栏
toolbar= new Ext.Toolbar(
/*
[{
text:'添加',
tooltip:'添加一条记录',
iconCls:'add',
handler:showAddcomp //hidden:true, //隐藏
//disabled:true // 不可用
}, '-', {
id:'editButton',
text:'修改',
tooltip:'修改',
iconCls:'option',
handler:handleEdit
},'-',{
text:'删除',
tooltip:'删除记录',
iconCls:'remove',
handler:handleDelete
}]
*/
);
//执行函数为工具栏动态附加按钮
SetToolButtons(toolbar);
奇怪在new Ext.Toolbar中定义的按钮可以执行动作,但用SetToolButtons函数动态加载的按钮就不行,是不是作用域的问题呀,帮帮我吧,兄弟们!!
函数调用问题,请各位兄弟帮忙!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- jiangguangxian 2011-01-04 14:29关注
你用的是ie什么版本?调试一下比较好,看到底当时运行的堆栈,还有这个方法名为什么不存在之类的具体错误信息。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 outlook无法配置成功
- ¥30 这是哪个作者做的宝宝起名网站
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题