2014-11-21 2 views
1

У меня есть поле выбора в диалоговом окне моего компонента, с четырьмя вариантами:CQ5, динамически установить 'defaultValue' в диалоге компонента с помощью extjs?

  • выходные
  • по умолчанию
  • аддон
  • перезаписать

В диалоге, я хочу динамически установить defaultValue свойство «выключено» или «по умолчанию» в зависимости от того, содержит ли URL-адрес определенные символы или нет. Это возможно?

Вот dialog.xml сниппет с моей попытки слушателя сделать это:

<extra_meta_description_tag_mode 
    jcr:primaryType="cq:Widget" 
    defaultValue="" 
    fieldLabel="SEO Description Usage" 
    name="./extraMetaDescriptionTagMode" 
    type="select" 
    xtype="selection">  
     <listeners 
      jcr:primaryType="nt:unstructured" 
      defaultValue="function(url) { 
       url.contain("en_gb/news") ? return "default" : return "off"; 
      }"/> 
     <options jcr:primaryType="cq:WidgetCollection"> 
      <off 
       jcr:primaryType="nt:unstructured" 
       text="Off" 
       value="off"/> 
      <default 
       jcr:primaryType="nt:unstructured" 
       text="Append pre-set text" 
       value="default"/> 
      <addon 
       jcr:primaryType="nt:unstructured" 
       text="Append input text" 
       value="addon"/> 
      <over_write 
       jcr:primaryType="nt:unstructured" 
       text="Overwrite" 
       value="overwrite"/> 
     </options> 
</extra_meta_description_tag_mode> 
+0

Путь URL-адреса означает путь к текущей странице или это что-то еще? – rakhi4110

+0

ye, путь к текущей странице, например /content/sometestweb/en-gb/news/testnews.html – seph

ответ

4

Слушатель может иметь только значения событий, DefaultValue не один. Вы можете использовать событие loadContent, которое запускается при загрузке диалога. CQ.WCM.getPagePath() даст текущий путь к странице:

<listeners 
    jcr:primaryType="nt:unstructured" 
    loadcontent="function(selection,record,path) { 
     var currentPath = CQ.WCM.getPagePath(); 
     if(currentPath.indexOf('en_gb/news')!=-1) 
     { 
      selection.setValue('default'); 
     } else { 
      selection.setValue('off'); 
     }"/> 

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

0

Вы также можете предоставить своему компоненту свойство itemId со значением: «extra_meta_description_tag_mode», затем написать плагин ExtJS и зарегистрировать его для типа xtype: «selection» и в методе init вашего плагина, установить свойство defaultValue в зависимости от текущий путь к странице.

Смежные вопросы