我正在尝试使用JSON模型构建SAPUI5应用程序。 我想添加2个下拉选择菜单,以便根据第一个选项的当前选择填充第二个菜单。 我试图完成它,但一开始就坚持了下来。
这是我从Ajax获得的(对象本身是从服务器传递的):
var data = {
"firm1":["firm1project1","firm1project2","firm1project3"],
"firm2":["firm2project1","firm2project2","firm2project3"],
"firm3":["firm3project1","firm3project2","firm3project3"],
"firm4":["firm4project1","firm4project2","firm4project3"]
};
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData(data);
sap.ui.getCore().setModel(oModel);
第一个菜单应该是公司列表,第二个菜单应该是选定公司的项目。现在我不知道如何以正确的方式将数据绑定到控件。
谢谢。
根据我读过的in the developer's guide,应该出现在不同控件中的数据包含在固定密钥下(如"简单应用程序中的聚合数据绑定"部分所示)我上面链接的页面,所以可以写出类似的东西:
var oListItemTemplate = new sap.ui.commons.ListItem("ListItemTemplate", {
text : "{firm}",
});
和项目:
var oListItemTemplate = new sap.ui.commons.ListItem("ListItemTemplate", {
text : "{firm/project}",
});
但在我的情况下,没有firm
键。公司选择菜单的ListItems
是键,而不是值。项目选择菜单中的ListItems
位于数组中,而不仅仅是固定键下的单独值。
那么,有没有办法或以某种方式将我当前形式的数据绑定到控件,或者数据应该如何对绑定有用?
答案 0 :(得分:1)
您的数据看起来更像下面这样,数据绑定JSON对象带有键。并且两个下拉框需要两个数据模型,应该使用multi data model绑定。我在JSBin做了一个满足你要求的例子,你可以看看并得到一些想法。
{
"firms": [
{
"name": "firm1",
"projects": [
{
"name": "firm1project1"
},
{
"name": "firm1project2"
},
{
"name": "firm1project3"
}
]
},
{
"name": "firm2",
"projects": [
{
"name": "firm2project1"
},
{
"name": "firm2project2"
},
{
"name": "firm2project3"
}
]
},
{
"name": "firm3",
"projects": [
{
"name": "firm3project1"
},
{
"name": "firm3project2"
},
{
"name": "firm3project3"
}
]
},
{
"name": "firm4",
"projects": [
{
"name": "firm4project1"
},
{
"name": "firm4project2"
},
{
"name": "firm4project3"
}
]
}
]
}