【问题标题】:Binding nested JSON data in SAPUI5 XML view在 SAPUI5 XML 视图中绑定嵌套的 JSON 数据
【发布时间】:2016-03-31 09:16:35
【问题描述】:

我正在尝试在我的 SAPUI5 应用程序中绑定来自嵌套 JSON 文件的数据。视图采用 XML 格式。

这是我的 JSON 文件中的 sn-p:

{
    "Departments": [
        {
            "ID": "1",
            "Name": "Транспортный цех 1",
            "Count": 35,
            "Address": "Корпус 1, Этаж 7",
            "Logo": "image/manager1.jpg",
            "Employees": [
                {
                    "ID": "1000001234",
                    "LastName": "Базенков",
                    "FirstName": "Андрей",
                    "MiddleName": "Анатольевич"
                },
                {
                    "ID": "1000001234",
                    "LastName": "Базенков",
                    "FirstName": "Андрей",
                    "MiddleName": "Анатольевич"
                }
            ]
        },
        {
            "ID": "2",
            "Name": "Транспортный цех 2",
            "Count": 35,
            "Address": "Корпус 1, Этаж 7",
            "Logo": "image/manager1.jpg",
            "Employees": [
                {
                    "ID": "1000001234",
                    "LastName": "Базенков",
                    "FirstName": "Андрей",
                    "MiddleName": "Анатольевич"
                },
                {
                    "ID": "1000001234",
                    "LastName": "Базенков",
                    "FirstName": "Андрей",
                    "MiddleName": "Анатольевич"
                }
            ]
        }
    ]
}

我在控制器中加载 JSON 文件,然后在我的 XML 视图中绑定数据“地址”和“名称”,如下所示:

<List id="list1" items="{path:'/Departments'}">
    <items>
        <ObjectListItem icon="{Logo}" type="Active" press="onListItemPress" number="{Count}" title="{Name}">
            <attributes>
                <ObjectAttribute text="{Address}" />    
            </attributes>
        </ObjectListItem>
    </items>
</List>

但是,当我尝试像这样绑定嵌套数据“FirstName”或“LastName”时,我无法绑定它。

text="{Employees/LastName}"

【问题讨论】:

    标签: json xml sapui5


    【解决方案1】:

    Employees 是一个数组。

    1. 如果您愿意,可以选择一个条目并使用{Employees/0/LastName}

    2. 您还可以使用格式化函数将员工合并为字符串:

    查看:

    <ObjectAttribute text="{path: 'Employees', formatter: '.formatEmployees'}"/>
    

    控制器:

    formatEmployees: function(aEmployees){
      return aEmployees.map(function(employee){ return employee.LastName + ", " +  employee.FirstName; }).join("; ");
    }
    
    1. 您可以使用 sap.m.ListBox 或 sap.m.Tokenizer 之类的列表控件,并将项目绑定到 Employees 数组。

    【讨论】:

    • 谢谢,另外,我使用了 text="{Employees/0/LastName}" 并且现在可以使用了。
    • @schnoedel :视图中的员工返回完整的员工数组。所以在你上面的代码中,我希望它总是只返回第一项。我希望这不是正确的答案
    • @PraveenGopal 你是对的:我的第一个建议是显示数组中第一个员工的姓氏。不会显示其他员工。然而,我的第二个和第三个建议将显示数组中的所有员工。似乎问题的作者出于某种原因选择了我的第一个建议。也许员工数组中的第一个条目始终负责部门...您能否解释一下您认为我的答案不正确的地方,以便我解决?
    • @schnoedel:其实我错了。正如你所解释的,你的答案是完美的。
    猜你喜欢
    • 2017-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多