我有以下功能,我尝试将指定的URL加载到新的或现有的选项卡(contentPane)中,我在大多数情况下使用它,但是当指定现有选项卡时,原始URL仍然会被重新加载而不是添加新的html,如何在没有在创建新选项卡时删除属性refreshOnShow的情况下完成传递现有选项卡的部分?
openTab = function(url,title, id){
var tab = dijit.byId(id);
var centerPane = dijit.byId('centerPane');
if (tab){
//if target container exists then let's load the url and add it to the container
centerPane.selectChild(tab);
$.get(url, function(data) {
$('#'+id).html(data);
});
centerPane.selectChild(tab);
} else {
var newTab = new dijit.layout.ContentPane(
{
'title': title,
href:url,
closable:true,
selected:true,
parseOnLoad:true,
preventCache:true,
refreshOnShow:true
}, id);
centerPane.addChild(newTab);
centerPane.selectChild(newTab);
}
};
答案 0 :(得分:1)
所以你所做的基本上是说,当重新打开这个标签时,让我追加我的内容,并且dojo说,'我刚打开这个标签,并且refreshOnShow是真的,所以让我去获取我的内容从服务器再次'。
我认为解决这个问题最干净的方法就是按照你的说法去做,并将refreshOnShow设置为false。为什么将它设置为true,选项卡是否包含需要从服务器一致刷新的内容?
如果您想要的是这样的(对于现有标签):
然后你应该可以做这样的事情:
newTab.connect(newTab, 'onLoad', function(){
// do my stuff after the dojo content has loaded
})
只是为选项卡的contentpane添加了一个事件处理程序,该选项卡在选项卡转到服务器后触发其内容。
答案 1 :(得分:1)
这是我的更新功能的外观,它适用于我:
openTab = function(url,title, id){
var tab = dijit.byId(id);
var centerPane = dijit.byId('centerPane');
if (tab){
//if target container exists then let's load the url and add it to the container
tab.href = url;
tab.set('title',title);
centerPane.selectChild(tab);
} else {
var newTab = new dijit.layout.ContentPane(
{
'title': title,
href:url,
closable:true,
selected:true,
parseOnLoad:true,
preventCache:true,
refreshOnShow:true
}, id);
centerPane.addChild(newTab);
centerPane.selectChild(newTab);
}
};