我对Json结果有一些问题,并将其嵌入Extjs Panel的html中。
这是我设法到目前为止。 myPanel
已嵌入mainPanel
,我在代码的其他部分之间显示/隐藏了myPanel
。
Ajax请求检索Json结果如下:
Ext.Ajax.request({
url: 'myStore',
success: function(r) {
var myItem = Ext.decode(r.responseText).itemName;
}
})
我想将myItem嵌入到mypanel中,如下所示:
var myPanel = new Ext.Panel({
hidden: true,
html:myItem
})
这是myPanel嵌入到我的主面板的地方:
var mainPanel = new Ext.Panel({
applyTo: 'mywizard',
frame: true,
items: [{
id: 'top',
xtype:'panel',
items: [
topPanel1,
topPanel2
]
},{
id: 'middle',
xtype: 'panel',
items: [
middlePanel1,
middlePanel2,
myPanel
]
},{
id: 'bottom',
xtype: 'panel',
items: [
footer
]
});
目前如果我要运行代码,我在myPanel中有一个“未定义”,所以我认为myItem超出了范围,因此myPanel没有选择。因此,我想知道如何/我应该怎么做才能在myPanel中反映出myItem(Json结果)?
谢谢。
答案 0 :(得分:1)
我找到了答案,经过测试并为我工作。对于任何坚持这一点的朋友。我需要做的只是用身体更新来更新html内容。
基本上,只需从mainPanel中间取出:
var middle = new Ext.Panel({
id: 'middle',
xtype: 'panel',
items: [
middlePanel1,
middlePanel2,
myPanel
]
})
当然,您需要将middle
替换回mainPanel
。
然后,接下来是将myPanel创建为norm:
var myPanel = new Ext.Panel({
id: 'myPanel',
hidden: true,
html: 'empty'
})
在Ajax请求中,您更新
Ext.Ajax.request({
url: 'myStore',
success: function(r) {
var myItem = Ext.decode(r.responseText).itemName;
var editmycontent = Ext.getCmp('myPanel');
editmycontent.body.update(myItem); // update myItem here
middle.doLayout(); // refresh the changes
}
})
就是这样!
答案 1 :(得分:0)
您在此部分中出现语法错误,更正后的代码如下所示:
var myPanel = new Ext.Panel({
hidden: true,
html:myItem // no ; here
});
你也必须小心确定范围问题,如果你的代码在一个类我会做那样的事情
Ext.Ajax.request({
url: 'myStore',
success: function(r) {
var myItem = Ext.decode(r.responseText).itemName;
var myPanel = new Ext.Panel({
hidden: true,
html:myItem // no ; here
});
this.parentPanel.add(myPanel);
}
,scope: this // note the set the scope
});