我的组件对话框中有一个选择框,有四个选项:
在对话框中,我希望动态设置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 :(得分: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');
}"/>
这会在每次加载对话框时重置该值,因此如果用户已覆盖默认值,您将添加条件以防止它。
答案 1 :(得分:0)
您还可以为组件提供一个itemId属性,其值为:&#34; extra_meta_description_tag_mode&#34;然后编写一个ExtJS插件并将其注册为xtype:&#34; selection&#34;在插件的init方法中,根据当前页面路径设置defaultValue属性。