Связывание агрегации с вложенными массивами JSON в SAPUI5 XML View - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь выполнить связывание агрегации с данными из вложенных массивов в моей JSON модели: здесь мои "Меню. json" Модель:

"days": {
    "monday": {
        "menus": [{
            "menu": "Spaghetti mit Rinder-Bolognese oder VEGATARISCH mit TomatenBasilikumsoße und Parmesan",
            "price": "3.90",
            "price2": "2.90",
            "title": "Menü 1"
        }, {
            "menu": "Schweinerückensteak frisch aus der Pfanne Maisgemüse mit Ofenpaprika und Blattpetersilie Kartoffel Gnocchi im Kürbissud grüne Pfeffer-Butter mit Basilikum",
            "price": "4.40",
            "price2": "3.40",
            "title": "Menü 2"
        }, {
            "menu": "Tilapia aus dem Ofen mit Kokos-Zitronengras Sauce 2,70 € Chinakohl, Karotten, Champignons und Erbsen Jasmin Duftreis",
            "price": "4.80",
            "price2": "3.50",
            "title": "Live Cooking"
        }, {
            "menu": "VEGETARISCH Kokos Paprikasuppe",
            "price": "1.20",
            "price2": "Suppenschale: 3.50",
            "title": "Suppe"
        }, {
            "menu": "Blumenkohl-Lauch Bratling mit Soja-Kerbeldip",
            "price": "2.50",
            "price2": "",
            "title": "Veganer Bratling"
        }]
    }, 
    "tuesday": {
        "menus": [{...}]
    }, 
    "wednesday": {
        "menus": [{...}]
    }, 
    "thursday": {
        "menus": [{...}]
    }, 
    "friday": {
        "menus": [{...}]
    }
}

} я хочу связать, например "понедельник" для моей таблицы вот так

<Table id="nordMenuTable" inset="false" items="{Menus>/monday/menus}">
                    <columns>
                        <Column minScreenWidth="Phone" demandPopin="true"/>
                        <Column minScreenWidth="Desktop" demandPopin="true" popinDisplay="WithoutHeader"><ObjectIdentifier title="{i18n>NordColumn1}"/></Column>
                        <Column minScreenWidth="Desktop" demandPopin="true" popinDisplay="Inline"><ObjectIdentifier title="{i18n>NordColumn3}"/></Column>
                        <Column minScreenWidth="Phone" hAlign="End"><ObjectIdentifier title="{i18n>NordColumn2}"/></Column>
                    </columns>
                    <items>
                        <ColumnListItem>
                            <ObjectIdentifier title="{Menus>title}"/>
                            <Text text="{Menus>menu}"/>
                            <Text text="{Menus>price2}"/>
                            <Text text="{Menus>price}"/>
                        </ColumnListItem>
                    </items>
                </Table>

Пожалуйста, помогите мне с синтаксисом привязки для JSON файлов с вложенными массивами. Я знаю, что все будет работать, если у меня будет одна JSON модель, содержащая только данные во вложенном массиве, но мне нужен мой JSON файл, подобный этому, со всеми меню, относящимися к определенным дням.

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

[Просмотр SS] [Ваш JSON неверен, сначала исправьте ваш Json. Затем в View Bind, как это, здесь моя модель называется устройство. JSON:

    {
    "days": [{
        "monday": {
            "menus": [{
                "menu": "Spaghetti mit Rinder-Bolognese oder VEGATARISCH mit TomatenBasilikumsoße und Parmesan",
                "price": "3.90",
                "price2": "2.90",
                "title": "Menü 1"
            }, {
                "menu": "Schweinerückensteak frisch aus der Pfanne Maisgemüse mit Ofenpaprika und Blattpetersilie Kartoffel Gnocchi im Kürbissud grüne Pfeffer-Butter mit Basilikum",
                "price": "4.40",
                "price2": "3.40",
                "title": "Menü 2"
            }, {
                "menu": "Tilapia aus dem Ofen mit Kokos-Zitronengras Sauce 2,70 € Chinakohl, Karotten, Champignons und Erbsen Jasmin Duftreis",
                "price": "4.80",
                "price2": "3.50",
                "title": "Live Cooking"
            }, {
                "menu": "VEGETARISCH Kokos Paprikasuppe",
                "price": "1.20",
                "price2": "Suppenschale: 3.50",
                "title": "Suppe"
            }, {
                "menu": "Blumenkohl-Lauch Bratling mit Soja-Kerbeldip",
                "price": "2.50",
                "price2": "",
                "title": "Veganer Bratling"
            }]
        }
    }]
};

```
    <Table id="nordMenuTable" inset="false" items="{path : 'device>/days/0/monday/menus'}">
                    <columns>
                        <Column minScreenWidth="Phone" demandPopin="true"/>
                        <Column minScreenWidth="Desktop" demandPopin="true" popinDisplay="WithoutHeader"><ObjectIdentifier title="Hello1"/></Column>
                        <Column minScreenWidth="Desktop" demandPopin="true" popinDisplay="Inline"><ObjectIdentifier title="{i18n>NordColumn3}"/></Column>
                        <Column minScreenWidth="Phone" hAlign="End"><ObjectIdentifier title="Hello2"/></Column>
                    </columns>
                    <items>
                        <ColumnListItem>

                            <cells>
                              <Text text="{device>title}"/>
                              <Text text="{device>price2}"/>
                               <Text text="{device>price}"/>

                            </cells>
                        </ColumnListItem>
                    </items>
                </Table>



  [1]: https://i.stack.imgur.com/Ej022.png
0 голосов
/ 02 марта 2020

Ваша json модель должна выглядеть примерно так:

{
    "days": {
        "monday": {
            "menus": [{

            }]
        },
        "tuesday": {
            "menus": [{

            }]
        }
    }
}

Ваша items агрегация должна быть items="{Menus>/days/monday/menus}", а для ColumnListItem путей {Menus>menu}, поскольку они являются относительными путями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...