Открыть URL в определенной вкладке с помощью Dojo - PullRequest
1 голос
/ 22 января 2012

У меня есть следующая функция, где я пытаюсь загрузить указанный 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);
    }
};

Ответы [ 2 ]

1 голос
/ 23 января 2012

Вот так выглядит моя обновленная функция, она работает для меня:

    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);
        }


    };
1 голос
/ 22 января 2012

То, что вы делаете, в основном говорит, что когда эта вкладка открывается заново, я добавляю свой контент, а додзё говорит: «Я только что открыл эту вкладку, а refreshOnShow - это правда, поэтому позвольте мне пойти и получить мой контент. с сервера снова ».

Я думаю, что самый простой способ обойти это сделать так, как вы говорите, и установить для refreshOnShow значение false. Почему у вас установлено значение true, имеет ли вкладка контент, который необходимо постоянно обновлять с сервера?

Если вы хотите что-то вроде этого (для существующей вкладки):

  1. Пользователь нажимает
  2. Dojo запускает и обновляет существующее содержимое вкладки
  3. Ваш ручной обработчик (на основе jquery) отправляется и получает другой контент и добавляет его (или иным образом использует его) в контент додзё автоматически обновляется

Тогда вы сможете сделать что-то вроде этого:

newTab.connect(newTab, 'onLoad', function(){
// do my stuff after the dojo content has loaded
})

Который просто добавляет обработчик событий в область содержимого для вашей вкладки, которая запускается после того, как вкладка отправлена ​​на сервер для своего содержимого.

...