我的回调代码(js文件)类似于
function addcontent(Title, tUrl, bURL, Id,purl){
alert(Id)
var runcontent = new Ext.Panel({
id: 'tt' + Id,
region: 'center',
autoLoad: {
url: tUrl,
callback: function(el){
addwindow(el, Id, bURL,purl);
},
scripts: true,
nocache: true
},
width: 600,
collapsible: false
});
}
function addwindow(el, Id, bURL,purl) {
//alert(el);
alert("add buttons " +{Id);
}
我的问题是调用函数不会添加窗口。当我在addcontent中警告“Id”时,它正在显示但不是addwindow,因为控件没有移动到addwindow。 如何跟踪/跟踪阻止控件移动到addwindow的异常是什么。?
答案 0 :(得分:3)
使用params创建回调的正确方法是使用createCallback
或createDelegate
。您的函数(显然)在全局范围内执行,因此它不会产生太大的实际差异,但createDelegate
允许您的回调在与原始函数相同的范围内执行,这使其成为通常的最佳默认选择。所以它会是这样的:
autoLoad: {
url: tUrl,
callback: addwindow.createDelegate(this, [Id, bURL,purl]),
scripts: true,
nocache: true
},
再次注意,你的案例中的this
将是全局的Window对象,但这仍然是一个很好的做法,以便将来在类方法中做同样的事情将按预期工作
答案 1 :(得分:2)
function addcontent(Title, tUrl, bURL, Id,purl){
alert(Id)
var runcontent = new Ext.Panel({
id: 'tt' + Id,
region: 'center',
autoLoad: {
url: tUrl,
callback: addwindow(Id, bURL,purl),
scripts: true,
nocache: true
},
width: 600,
collapsible: false
});
}
function addwindow(Id, bURL,purl) {
//alert(el);
alert("add buttons " +Id);
}