CQ5 - 在选择xtype中动态填充选项

时间:2014-12-30 00:56:44

标签: cq5 aem sling

我现在已经敲了好几个小时。我正在尝试动态填充选择xtype中的选项,但无法使其工作。这是我的dialog.xml

<resourceType
            jcr:primaryType="cq:Panel"
            title="Header Type">
            <items jcr:primaryType="cq:WidgetCollection">
                <headerType
                        jcr:primaryType="cq:Widget"
                        fieldLabel="Header Type"
                        name="./headerType"
                        type="select"
                        xtype="selection">
                    <options jcr:primaryType="cq:WidgetCollection">
                        <categories
                            jcr:primaryType="cq:Widget"
                            path="/content/admin/adminView/jcr:content/header-admin-content/cats/type.infinity.json"
                            width="500"
                            xtype="cqinclude" />
                    </options>
                </headerType>
            </items>
        </resourceType>

我正在制作的json:

content/admin/adminView/jcr:content/header-admin-content/cats/type.infinity.json

看起来像这样:

{"jcr:primaryType":"nt:unstructured","item_1":  
{"jcr:primaryType":"nt:unstructured","text":"small","parameter":"small"},"item_2":
{"jcr:primaryType":"nt:unstructured","text":"medium","parameter":"medium"},"item_3":
{"jcr:primaryType":"nt:unstructured","text":"large","parameter":"large"},"item_4":
{"jcr:primaryType":"nt:unstructured","text":"none","parameter":"none"}} 

当我打开对话框时没有任何反应我只是得到一个JS错误 TypeError:snippet.xtype未定义

感谢任何帮助!

1 个答案:

答案 0 :(得分:7)

selection xtype的选项可以通过两种方式动态设置

  1. options属性设置为返回JSON数组选项的路径
  2. 编写一个设置选项的函数(使用setOptions方法)并将此函数作为optionsProvider属性的值传递。
  3. 在这两种情况下,JSON返回的数据必须是数组。

    要使用方法1,在 headerType 节点上将options属性设置为将提供JSON数据的路径。将optionsRoot proprety设置为包含JSON数组的属性的名称。将optionsTextField设置为应为文本的JSON数据中的属性名称。将optionsValueField设置为JSOn数据中应该为值的属性名称。

    详细的教程可以在这里找到:http://jenikya.com/blog/2013/04/dynamic-dialog-data-in-cq5.html

    对于方法2,请参阅this