Javascript 如何使用UI5中的IconPool在对话框中选择图标
您好,我需要帮助在带有ValueHelp的SelectDialog中集成UI5的IconPool。您应该能够选择所有图标 我的代码: Home.controller.jsJavascript 如何使用UI5中的IconPool在对话框中选择图标,javascript,select,dialog,icons,sapui5,Javascript,Select,Dialog,Icons,Sapui5,您好,我需要帮助在带有ValueHelp的SelectDialog中集成UI5的IconPool。您应该能够选择所有图标 我的代码: Home.controller.js handleValueHelp:function(){ var loadDialog=this.loadFragment(“myValueHelpFragment”,this) loadDialog.then(函数(oSelectHelpDialog){ this.getView().addDependent(this.oS
handleValueHelp:function(){
var loadDialog=this.loadFragment(“myValueHelpFragment”,this)
loadDialog.then(函数(oSelectHelpDialog){
this.getView().addDependent(this.oSelectHelpDialog);
var oBinding=oSelectHelpDialog.getBinding(“项”);
oBinding.filter([]);
oSelectHelpDialog.open();
}.约束(这个);
},
您正在视图中使用“命名模型”(myModel)进行字段绑定:{myModel>图标}
。
但是您在Component.js中使用默认模型:oDialog.setModel(oModel)
使用此语法应将模型设置为在XML视图中使用的命名模型:
oDialog.setModel(oModel, "myModel")
您还需要在项目路径中引用命名模型
items="{ path : 'myModel>/icons'}"
或者,只需从{myModel>图标}
和{myModel>IconText}
中删除myModel>
——只要没有其他默认模型
<StandardListItem
id="iconInputHelpId"
icon="{Icon}"
title="{IconText}"/>
您的代码中有一些误解 命名模型 绑定StandardListItem时为模型使用了名称
但是,在绑定items聚合和将模型设置为视图时,您没有使用该名称
items=”{
路径:“/图标”
}">
oDialog.setModel(oModel)
正如@Bernard所说,你要么完全放弃这个名字,要么始终如一地使用它
绑定路径
IconPool.getIconNames()
返回字符串的平面列表。因此,您的模型结构将如下所示:
{
图标:[
“意外休假”,
“帐户”,
“扳手”,
“门窗”,
“洗衣机”,
...
]
}
UI5使用当前绑定(假设模型名问题将得到解决)尝试从JSONModel加载以下内容:
"/icons/0/Icon"
"/icons/0/IconText"
但是图标数组中的项目没有属性图标
或图标上下文
。它们只是线
现在,您必须从scrath构建图标路径。这可以直接在XML中完成
使用空路径(这是一个相对路径,因为它不是以/
开头)将按原样接收项目。在大多数情况下,这是不好的,因为项是具有属性的对象。在您的例子中,项是一个字符串,因此这是完美的
这样你就不需要工厂了强>
工作示例: