我写的代码:
- JScript code
/** * tbarCfg:{ * catUrl:"xx" * } */ MyToolbar = Ext.extend(Ext.Toolbar,{ category:null, constructor:function(_cfg){ Ext.apply(this,_cfg); MyToolbar.superclass.constructor.call(this,{ height:40, items:this["category"], listeners:{ "beforerender":function(_tbar){ Ext.Ajax.request({ url:this["tbCfg"].catUrl, success:function(_response){ alert(_response.responseText); this.category = _response.responseText; } }); } } }); } });
url返回的JSON数据是[{text:'啊色'},{text:'阿杜'},{text:'就啊'}] ,我明明给this["category"]赋值了啊。。。
怎么样才能一次添加3个按钮?
------解决方案--------------------
两个地方this指向是不一样的
回调函数中的this的指向应该是window
而且就算把指向改正确同样不会得到正确结果
产生配置对象时ajax的回调函数并没有执行,所以this["category"]必定为undefined
还有就算有值items需要的是一个数组,不是字符串
你这个错误挺多的,都不好给你改,
js基础需加强
你这个的做法,建议改一下
- JScript code
MyToolbar.superclass.constructor.call(this,{ height:40, items:[],//先配一个空的 listeners:{ "beforerender":function(_tbar){ var _this=this;//用一个局部变量保存this引用 Ext.Ajax.request({ url:this["tbCfg"].catUrl, success:function(_response){ alert(_response.responseText); var backData=eval(_response.responseText);//json字符串需解析为数组 for(var i=0;i<backData.length;i++)//动态添加项 { _this.add(backData[i]); } } }); } } });