Как показать / скрыть диалоговые поля с помощью флажка в пользовательском интерфейсе AEM Touch

Я относительно новичок в AEM, и я пытаюсь скрыть / показать поля диалога при нажатии флажка. Я пробовал несколько способов, но не смог добиться этой функциональности. Это просто для моего собственного обучения. Как я могу этого добиться?

Я попытался добавить js clientlib и добавить некоторые классы и цель в поля флажка и цели соответственно, как было предложено в других ответах, но, похоже, это не сработало. Пожалуйста помоги.

1 ответ

Сначала вам нужно создать clientLibs и добавить категории как cq.authoring.dialog.all, см. Код ниже:

  (function($, $document) {
 $document.on("dialog-ready", function() {
   Coral.commons.ready($document, function () {   
  dispalyOrHideTabs();   
  $(document).on('change', '#showText', function() {

      if($('#showText').attr('checked')){
        show('1');
      }else{
          hide('1');    
      }

 });

 $(document).on('change', '#showTable', function() {

       if($('#showTable').attr('checked')){
          show('2');
      }else{
          hide('2');    
      }

 });    

     function hide(index){
                     var tab = $document.find("[id='compareImgId-"+index+"']").closest(".coral3-Panel");
                      var tab2 = tab.attr("aria-labelledby");
                      var tab3 = $document.find("[id='"+tab2+"']");
                      tab3.addClass("hide");
     }
     function show(index){
                     var tab = $document.find("[id='compareImgId-"+index+"']").closest(".coral3-Panel");
                      var tab2 = tab.attr("aria-labelledby");
                      var tab3 = $document.find("[id='"+tab2+"']");
                      tab3.removeClass("hide");
     }

     function dispalyOrHideTabs(){
         var editable = Granite.author.DialogFrame.currentDialog.editable;
         if(editable){
        var node = Granite.HTTP.eval(Granite.author.DialogFrame.currentDialog.editable.path + ".json");
         if(node){
            var storedTextValue = node.showText;
             var storedTableValue = node.showTable;

             if(storedTextValue){
                    show('1');
             }else{
                    hide('1');
             }

             if(storedTableValue){
                    show('2');
             }else{
                    hide('2');
             }

         }
     }

     }

    });
     });

  })($, $(document));

Добавьте свойство granite:id как showText для типа ресурса флажка.

А ниже находятся вкладки диалогов, которые будут скрыты и показаны:

Другие вопросы по тегам