Sapui5 如何筛选数据并在主详细信息视图中显示
我的数据 链接 模型Sapui5 如何筛选数据并在主详细信息视图中显示,sapui5,Sapui5,我的数据 链接 模型 var oModel = new sap.ui.model.json.JSONModel("https://api.myjson.com/bins/rwqy"); sap.ui.getCore().setModel(oModel,'data'); 我想创建一个SplitApp(母版详细信息页)。我已将母版页创建为来自用户数据集的用户名列表。列表应该包含名字 var oList = new sap.m.List({ id:"listId", mode: sa
var oModel = new sap.ui.model.json.JSONModel("https://api.myjson.com/bins/rwqy");
sap.ui.getCore().setModel(oModel,'data');
我想创建一个SplitApp(母版详细信息页)。我已将母版页创建为来自用户数据集的用户名列表。列表应该包含名字
var oList = new sap.m.List({
id:"listId",
mode: sap.m.ListMode.SingleSelect,
select: function(){
oController.itemSelected();
}
});
var oItemTemplate = new sap.m.StandardListItem({
id: "sList",title:"{data>firstname}"});
oList.bindAggregation("items","data>/user",oItemTemplate );
return new sap.m.Page({
id:"master",
title: "Claims",
content: [oList]
});
现在,在详细信息页面中,我想在表中显示该用户(当我从主视图中选择特定用户时)的费用
现在我的问题是如何过滤数据并将其用于详细信息视图。例子:
如果我从主视图列表中选择用户“X”,我应该从“用户”中获取id 1,从“费用”中获取Expenseno 1、4和7(因为它们与uid 1关联),最后我将在详细信息视图中显示uid 1的费用
我正在尝试的代码
itemSelected: function(){
var app = sap.ui.getCore().byId("appid");//when a item will b selected first we will get instance of our app
var list = sap.ui.getCore().byId("listId");//then will get instance of the list
var sitem = list.getSelectedItem();
var spath = sitem.oBindingContexts.data.sPath;
var oitem = sap.ui.getCore().getModel('data').getProperty(spath);
console.log(oitem); //oitem has Object { id="", firstname="", lastname=""} values of the selected user.
//***how to get only the id from "oitem" and filter with expense table***//
//var Model = new sap.ui.model.json.JSONModel(oitem); // will use it for details
//sap.ui.getCore().setModel(Model,'item');// view(oitem should contain the filtered data)
app.toDetail("detailsid","show");
},
请帮助,谢谢。我想您应该将数据源重新组织为类似的格式。
[
{
"id": "1",
"firstname": "x",
"lastname": "k",
"expense": [
{
"expenseno": "1",
"uid": "1",
"item": "c",
"amount": "1500"
},
{
"expenseno": "4",
"uid": "1",
"item": "y",
"amount": "1000"
},
{
"expenseno": "7",
"uid": "1",
"item": "q",
"amount": "900"
}
]
},
{
"id": "2",
"firstname": "y",
"lastname": "kalita",
"expense": [
{
"expenseno": "2",
"uid": "2",
"item": "t",
"amount": "1150"
},
{
"expenseno": "5",
"uid": "2",
"item": "t",
"amount": "3500"
}
]
},
{
"id": "3",
"firstname": "z",
"lastname": "kalita",
"expense": [
{
"expenseno": "6",
"uid": "3",
"item": "s",
"amount": "3500"
},
{
"expenseno": "3",
"uid": "3",
"item": "p",
"amount": "500"
}
]
}
]
您可以通过以下方式从初始数据集执行此操作
myData.user.forEach(function(d,i){
var exp = myData.expense.filter(function(d1){
if(d1.uid === d.id)return true;
});
console.log(exp);
});
在此之后,它只是来自父级的相对绑定/费用将支付父母的所有费用。
希望这有帮助 我想您可以将数据源重新组织为类似的格式。
[
{
"id": "1",
"firstname": "x",
"lastname": "k",
"expense": [
{
"expenseno": "1",
"uid": "1",
"item": "c",
"amount": "1500"
},
{
"expenseno": "4",
"uid": "1",
"item": "y",
"amount": "1000"
},
{
"expenseno": "7",
"uid": "1",
"item": "q",
"amount": "900"
}
]
},
{
"id": "2",
"firstname": "y",
"lastname": "kalita",
"expense": [
{
"expenseno": "2",
"uid": "2",
"item": "t",
"amount": "1150"
},
{
"expenseno": "5",
"uid": "2",
"item": "t",
"amount": "3500"
}
]
},
{
"id": "3",
"firstname": "z",
"lastname": "kalita",
"expense": [
{
"expenseno": "6",
"uid": "3",
"item": "s",
"amount": "3500"
},
{
"expenseno": "3",
"uid": "3",
"item": "p",
"amount": "500"
}
]
}
]
您可以通过以下方式从初始数据集执行此操作
myData.user.forEach(function(d,i){
var exp = myData.expense.filter(function(d1){
if(d1.uid === d.id)return true;
});
console.log(exp);
});
在此之后,它只是来自父级的相对绑定/费用将支付父母的所有费用。
希望这有帮助