如何在 sapUI XML-View 中迭代 JSONModel?

问题描述 投票:0回答:2

如何在 SapUI5 中构建一个 XML 视图来迭代 JSONModel 中的所有元素?

到目前为止我有一个控制器

sap.ui.define([
    "sap/ui/core/mvc/Controller",
    "sap/ui/model/json/JSONModel"
], function (Controller, JSONModel) {
    "use strict";

    return Controller.extend("sap.ui.demo.myApp.myController", {
        onInit: function () {
            //// set data model on view
            var oData = {
                title: "A cool title",
                values: [{name: "Text 1"}, {name: "Text 2"}, {name: "Text 3"}]
            };
            var oModel = new JSONModel(oData);
            this.getView().setModel(oModel);
        }
    });
});

和一个视图

<mvc:View
        controllerName="sap.ui.demo.myApp.myController"
        xmlns="sap.m"
>
    <Panel expandable="true" expanded="true" headerText="{/title}" width="100%">
        <content>
            <!-- how to iterate over {/values} ? -->
        </content>
    </Panel>

</mvc:View>
xml sapui5
2个回答
6
投票

您可以使用聚合绑定将面板的内容绑定到您的值数组。您必须添加将为每个数组项克隆的模板控件。使用模板内的相对绑定路径来访问特定数组项的属性。

<mvc:View
    controllerName="sap.ui.demo.myApp.myController"
    xmlns="sap.m"
>
    <Panel expandable="true" expanded="true" headerText="{/title}" width="100%" content="{/values}">
        <content>
            <!-- give the template control which will be cloned for each entry in your array -->
            <Label text="{name}"/>
        </content>
    </Panel>
</mvc:View>

希望这能给你一些帮助。


1
投票

再次重申:
您可以在具有聚合的所有控件上使用聚合绑定。
将数组数据输出为重复文本控件的最简单方法之一是 VBox:

<VBox items="{MyModel>/MyArrayProp}">
  <items>
    <Text text="{MyModel>FieldWithinMyArrayProp}" />
  </items>
</VBox >
© www.soinside.com 2019 - 2024. All rights reserved.