SAP UI5. Привязка агрегирования в представлении JSON. Работает на 1.60, но не на 1.80 - PullRequest
1 голос
/ 05 августа 2020

Я боролся с этой проблемой, и мне было интересно, знает ли кто-нибудь из вас, что здесь происходит.

Работа над представлением JSON, которое в основном представляет собой таблицу с 1 столбцом ( работает над доказательством концепции). В этом столбце должна отображаться дата, поэтому я использую DatePicker в качестве шаблона и привязан к моей модели. Выглядит это так:

{
"Type": "sap.ui.core.mvc.JSONView",
"content": [
    {
        "Type": "sap.ui.table.Table",
        "id": "overviewTable",
        "selectionMode": "Single",
        "visibleRowCount": 3,
        "selectionBehavior": "RowOnly",
        "editable": false,
        "enableColumnReordering": false,
        "rows": {
            "path": "/items",
            "templateShareable": true
        },
        "columns": [
            {
                "Type": "sap.ui.table.Column",
                "id": "MYPROPERTYID",
                "hAlign": "Left",
                "width": "100%",
                "resizable": false,
                "sortProperty": "MYPROPERTYID",
                "filterProperty": "MYPROPERTYID",
                "filterType": {
                    "type": "sap.ui.model.type.Date",
                    "formatOptions": {
                        "pattern": "MM/dd/yyyy"
                    }
                },
                "label": {
                    "Type": "sap.m.Label",
                    "text": "My property ID",
                    "design": "Bold"
                },
                "template": {
                    "Type": "sap.m.DatePicker",
                    "editable": false,
                    "value": {
                        "path": "MYPROPERTYID",
                        "type": "sap.ui.model.type.Date"
                    }
                }
            }
        ]
    }
]}

Запуск этого приложения на 1.60 отображает таблицу без проблем. У меня есть фиктивные данные в моем бэкэнде (в основном 1 строка данных), и они отлично связываются и показывают данные, как и должно быть. Вдобавок ко всему, у меня также есть набор других приложений, которые следуют той же таблице обзора вверху, детали в формате ниже, с такими же привязками, и у меня никогда не было проблем с этим. Я также заметил, что это что-то особенное c для DatePicker. Если бы я, например, изменил свой шаблон на вход, моя привязка агрегирования работала бы.

[EDIT] Я получаю следующую ошибку: Загрузка данных завершилась неудачно: Ошибка: "[объект Object ] "недопустим для" шаблона "агрегации элемента sap.ui.table.Column

Ошибка возникает при попытке обработать этот кусок:

{
    "path": "MYPROPERTYID",
    "type": "sap.ui.model.type.Date"
}

Я предполагаю, что что-то изменилось между 1.60 и 1.71. Это насколько я сузил круг вопросов и продолжаю исследовать, я просто надеялся, что, может быть, кто-то знает, что происходит, и может сэкономить мне несколько часов.

[РЕДАКТИРОВАТЬ] Я сузил круг поиска между 1.63.1 и 1.64.1. Если вы хотите увидеть это в действии: https://jsbin.com/medenuq/edit?html, консоль, вывод Просто поиграйте с версиями, чтобы увидеть, что произойдет.

Любая идея будет очень признательна. Спасибо!

1 Ответ

1 голос
/ 06 августа 2020

Я открыл тикет, и вы можете отследить его здесь: https://github.com/SAP/openui5/issues/2972

Там codeworrior очень хорошо объясняет, откуда исходит регрессия, и как ее обойти, пока выпущено официальное исправление. Я просто вставлю здесь его решение, чтобы вам не приходилось go, если все, что вам нужно, это ответ:

"template": {
    "Type": "sap.m.DatePicker",
    **"ui5object": true,       // <-- marker property**
    "editable": false,
    "displayFormat": "MM/dd/yyyy",
    "valueFormat": "yyyyMMdd",
    "value": {
        "path": "Date",
        "type": "sap.ui.model.type.String"
    }
}

Большое спасибо codeworrior за вашу быструю помощь, а также спасибо всем, кто посмотрел на это и подумал.

...