关于ext,'monitorID' 为空或不是对象,大家有没有遇到类似的问题啊?
从action传进一个json格式的字符串到界面,界面做完特殊符号处理后,用eval()方法转化为一个对象,代码如下:
var monitorlist = '<%=monitor_list%>';
monitorlist = eval(monitorlist);
接着用遍历的方式获取到list中的每个monitor,代码如下:
var monitorListCount = monitorlist.length;
var monitorListNum = parseInt(monitorListCount,10);
var monitorBtnArr = new Array();
for(i = 0; i < monitorListNum*2; i++)
{
var monitor = monitorlist[i];
alert(monitor.monitorID);
alert(monitor.monitorName);
var btn = new Ext.Button({
id : monitor.monitorID,
text : monitor.monitorName,
disabled : false
});
}
接着在下面的button组件中,获取每个monitor对象的monitorID和monitorName属性值,其实在定义button组件前的两个alert中已经可以取到monitorID和monitorName的值了,但是页面中还是报:'monitorID' 为空或不是对象,让我甚是郁闷啊,有哪位大侠也遇到过类似的问题啊,有谁知道EXT这里有暗藏什么玄机啊,好奇怪!
------解决方案--------------------确实很奇怪。。。。
把monitor.monitorID在赋给一个变量, 然后new Ext.Button里面用那个新变量试试。
死马当活马办了。
------解决方案--------------------我没有去重试你的代码,不过据你所说,既然你已经获取到了monitor.monitorID的值,那么如果你要继续在循环里创建button组件,你可以将创建button的代码写进一个function里面,然后将monitor.monitorID作为此function的参数再传给Ext.Button.代码如下:
function createButton(monitorId){
var btn = new Ext.Button({
id : monitorId,
text : 'DIY',
disabled : false
});
}
for(i = 0; i < monitorListNum*2; i++)
{
var monitor = monitorlist[i];
alert(monitor.monitorID);
alert(monitor.monitorName);
createButton(monitor.monitorID)
}