在经典对话框中选择的下拉值在触摸 ui 对话框中不显示相同的值
Drop down values selected in classic dialog doesn't show same value in touch ui dialog
我们创建了一个经典 UI 对话框和触摸 UI 对话框,带有一个显示动态值的下拉小部件。我们使用 optionsProvider 属性 在经典 ui 和数据源中填充这些值 ui.
这很好用;然而,在我们select 经典 ui 中的下拉值并以触摸 ui 模式打开对话框后,触摸 ui 对话框不会显示 selected经典 ui 对话框中的值。当我们尝试在 touch ui 对话框中保存值并打开经典 ui 对话框时,情况也是如此。此外,无论 selected 值是否保存在页面的组件节点中,这些对话框在以其他对话框模式保存时无法从保存的 属性 中选取值。
发生这种情况是因为监听器,因为我能够使用静态值获取其他组件中的下拉值吗?
请帮我解决这个问题。
经典UI属性,
<productCategory
jcr:primaryType="cq:Widget"
fieldLabel="select Product Category"
name="./productCategory"
optionsProvider="function(){ 
 var categories = []; 
 var tags = '/etc/tags/mecommerce/categories'
 var url = CQ.HTTP.noCaching(tags+'.infinity.json'); 
 var categoriesList = CQ.HTTP.eval(url); //DAM Url
 
for(var name in categoriesList){ //Looping the node structure

/*
Each image will have the meta data in it's jcr:content. This meta data consists of many values like, its 
type, size, fileFormat etc., We are checking the format is image or not and adding
*/		
 if(categoriesList[name]['jcr:title']){
			var list = {}; 
 // each option should contain text and value
 list['text'] = categoriesList[name]['jcr:title']; 
 list['value'] = categoriesList[name]['jcr:title']; 
			categories.push(list); 
 } 
 } 
 return categories; // returns the JSON
}"
type="select"
xtype="selection"/>
触摸UI属性,
<productCategory
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/select"
fieldLabel="select Product Category"
name="./productCategory">
<datasource
jcr:primaryType="nt:unstructured"
sling:resourceType="/apps/mecommerce/commerce/components/content/categoryStandardProductDetail/datasources/categories"
addNone="{Boolean}true"/>
</productCategory>
问题与数据源有关。将值添加到地图时,键和值不相同。更正后问题得到解决。
List<KeyValue> categories = new ArrayList<KeyValue>();
for (Iterator<Resource> it = categoryRes.listChildren(); it.hasNext();) {
Resource category = it.next();
ValueMap vm = ResourceUtil.getValueMap(category);
String title = vm.get("jcr:title", category.getName());
String value = vm.get("jcr:title", category.getName());
if (!title.equals("*")) {
value = value;
}
categories.add(new KeyValue(category.getName(), value));
}
修改为,
List<KeyValue> categories = new ArrayList<KeyValue>();
if (dsCfg.get("addNone", false)) {
categories.add(new KeyValue("", ""));
}
for (Iterator<Resource> it = categoryRes.listChildren(); it.hasNext();) {
Resource category = it.next();
ValueMap vm = ResourceUtil.getValueMap(category);
String title = vm.get("jcr:title", category.getName());
String value = vm.get("jcr:title", category.getName());
if (!title.equals("*")) {
value = value;
}
categories.add(new KeyValue(value, value));
}
我们创建了一个经典 UI 对话框和触摸 UI 对话框,带有一个显示动态值的下拉小部件。我们使用 optionsProvider 属性 在经典 ui 和数据源中填充这些值 ui.
这很好用;然而,在我们select 经典 ui 中的下拉值并以触摸 ui 模式打开对话框后,触摸 ui 对话框不会显示 selected经典 ui 对话框中的值。当我们尝试在 touch ui 对话框中保存值并打开经典 ui 对话框时,情况也是如此。此外,无论 selected 值是否保存在页面的组件节点中,这些对话框在以其他对话框模式保存时无法从保存的 属性 中选取值。
发生这种情况是因为监听器,因为我能够使用静态值获取其他组件中的下拉值吗?
请帮我解决这个问题。
经典UI属性,
<productCategory
jcr:primaryType="cq:Widget"
fieldLabel="select Product Category"
name="./productCategory"
optionsProvider="function(){ 
 var categories = []; 
 var tags = '/etc/tags/mecommerce/categories'
 var url = CQ.HTTP.noCaching(tags+'.infinity.json'); 
 var categoriesList = CQ.HTTP.eval(url); //DAM Url
 
for(var name in categoriesList){ //Looping the node structure

/*
Each image will have the meta data in it's jcr:content. This meta data consists of many values like, its 
type, size, fileFormat etc., We are checking the format is image or not and adding
*/		
 if(categoriesList[name]['jcr:title']){
			var list = {}; 
 // each option should contain text and value
 list['text'] = categoriesList[name]['jcr:title']; 
 list['value'] = categoriesList[name]['jcr:title']; 
			categories.push(list); 
 } 
 } 
 return categories; // returns the JSON
}"
type="select"
xtype="selection"/>
触摸UI属性,
<productCategory
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/foundation/form/select"
fieldLabel="select Product Category"
name="./productCategory">
<datasource
jcr:primaryType="nt:unstructured"
sling:resourceType="/apps/mecommerce/commerce/components/content/categoryStandardProductDetail/datasources/categories"
addNone="{Boolean}true"/>
</productCategory>
问题与数据源有关。将值添加到地图时,键和值不相同。更正后问题得到解决。
List<KeyValue> categories = new ArrayList<KeyValue>();
for (Iterator<Resource> it = categoryRes.listChildren(); it.hasNext();) {
Resource category = it.next();
ValueMap vm = ResourceUtil.getValueMap(category);
String title = vm.get("jcr:title", category.getName());
String value = vm.get("jcr:title", category.getName());
if (!title.equals("*")) {
value = value;
}
categories.add(new KeyValue(category.getName(), value));
}
修改为,
List<KeyValue> categories = new ArrayList<KeyValue>();
if (dsCfg.get("addNone", false)) {
categories.add(new KeyValue("", ""));
}
for (Iterator<Resource> it = categoryRes.listChildren(); it.hasNext();) {
Resource category = it.next();
ValueMap vm = ResourceUtil.getValueMap(category);
String title = vm.get("jcr:title", category.getName());
String value = vm.get("jcr:title", category.getName());
if (!title.equals("*")) {
value = value;
}
categories.add(new KeyValue(value, value));
}