lanseduibai 2011-01-04 10:10
浏览 257
已采纳

函数调用问题,请各位兄弟帮忙!

最近用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函数动态加载的按钮就不行,是不是作用域的问题呀,帮帮我吧,兄弟们!!

  • 写回答

3条回答 默认 最新

  • jiangguangxian 2011-01-04 14:29
    关注

    你用的是ie什么版本?调试一下比较好,看到底当时运行的堆栈,还有这个方法名为什么不存在之类的具体错误信息。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题