2014-11-21 66 views
1

我有我的組件的對話框中選擇框,有四個選項:CQ5,使用extjs在組件對話框中動態設置'defaultValue'?

  • 關閉
  • 默認
  • 插件
  • 覆蓋

在對話框中,我想動態設置defaultValue屬性根據URL路徑是否包含某些字符而爲'off'或'default'。這可能嗎?

這裏是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 2014-11-21 11:29:09

+0

ye,當前頁面的路徑,例如/content/sometestweb/en-gb/news/testnews.html – seph 2014-11-21 11:39:56

回答

4

的聽衆只能有事件的值,默認值是一個也沒有。您可以使用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屬性,具體取決於當前頁面路徑。

相關問題