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);
    });
在此之后,它只是来自父级的相对绑定/费用将支付父母的所有费用。 希望这有帮助