如何遍历JSON模型?

时间:2016-03-30 10:45:56

标签: sapui5

图片

enter image description here

Controller.js

item: function(evt) {
    var list = sap.ui.getCore().byId('appListId');
    var sItem = list.getSelectedItem();

    var oBindingContext = sItem.getBindingContext('products');
    var sPath = oBindingContext.sPath;

    console.log(sPath);  // get path /collection/0/App/0

    var context = sap.ui.getCore().byId("appListId").getModel('products')
    .getContext(sPath);

    var start = sPath.lastIndexOf("/") + 1;
    var appIndex = sPath.substring(start, sPath.length);

    this.router.navTo("selectedAppRecord", {
        catIndex : this.subCatIndex,
        appIndex : appIndex
    });
}

JSON数组的路径:

get this path /collection/0/App/0

我有一个JSON数组:

{
    "collection": [{
        "model": "08 Report Fraud",
        "App": [{
            "App": "COUNCIL001",
            "description": "Benefit Fraud",
            "module": "08 Report Fraud",
            "iConClass": "icon-devil",
            "UserSpecific": "Yes"
        }]
    }]
}

最后我的目标是如何在控件端获取此UserSpecific密钥。

1 个答案:

答案 0 :(得分:1)

您可以使用BindingContext的getProperty函数来获取相对属性。

var oItem = sap.ui.getCore().byId('appListId').getSelectedItem();
oItem.getBindingContext('products').getProperty('UserSpecific');

在你的处理程序函数中,我建议从事件中获取当前项目:

oEvent.getSource() || oEvent.getSource().getSelectedItem()

取决于事件的类型(ListItem #select或List#selectionChange)。