Как установить путь для привязки OData в диалоге SAPUI5 - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь связать мои данные в виде списка, который отображается в диалоге.Диалоговое окно открывается с помощью метода onClick в подробном представлении шаблона основного подробного представления.

    onInit : function () {
            // Model used to manipulate control states. The chosen values make sure,
            // detail page is busy indication immediately so there is no break in
            // between the busy indication for loading the view's meta data
            var oViewModel = new JSONModel({
                busy : false,
                delay : 0,
                lineItemListTitle : this.getResourceBundle().getText("detailLineItemTableHeading")
            });

            this.getRouter().getRoute("object").attachPatternMatched(this._onObjectMatched, this);

            this.setModel(oViewModel, "detailView");

            this.getOwnerComponent().getModel().metadataLoaded().then(this._onMetadataLoaded.bind(this));


        },
    onNodeLeaveSent : function (){
            var dialog = new sap.m.Dialog({
            title: 'Invoce Documents',
            type: 'Message',
                content: new sap.m.List({
                    items:{
                        path: "{detailView>/PurchaseOrderDeliverySet}",
                        template: new sap.m.StandardListItem({
                            title: "{detailView>DNumber}",

                        })
                    }
                }),
            beginButton: new sap.m.Button({
                text: 'OK',
                press: function () {
                    dialog.close();
                }
            }),
            afterClose: function() {
                dialog.destroy();
            }
        });
        this.getView().addDependent(dialog);
        dialog.open();
        }

В списке отсутствуют данные.Я не понимаю, как правильно ссылаться на мою сущность из модели данных.

Может ли кто-нибудь помочь?

Сервис выглядит следующим образом enter image description here

Вот метафайл:

enter image description here

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Я полагаю, что каким-то образом модель, созданная в OnInit (в вашем примере, oViewModel), не доступна "детям" (в вашем случае диалогу) вашего представления.

Попробуйте эти>

Или

  • Объявите вашу модель в manifest.json, чтобы он автоматически создавался sapui5.Таким образом, вы можете попытаться получить к нему доступ в любом месте вашего приложения:

    enter image description here

enter image description here

0 голосов
/ 12 февраля 2019

В комментариях становится грязно, поэтому я пишу это как ответ:

Ваша начальная кодировка должна работать с абсолютной привязкой (ведущий /) в элементе.См. Пример кодирования SAP

path: "/PurchaseOrderDeliverySet"
  • , если ваша служба возвращает данные в браузере через необработанный URL-адрес odata
  • , если ваша модель OData является моделью по умолчанию безимя (поиск в manifest.json)

Но, глядя на свою бизнес-логику, вы, вероятно, захотите показать все поставки для выбранного (в главном представлении) и показанного (в подробном представлении) заказа на покупку.

Привязка элемента в DetailView: /PurchaseOrder('1234')

Таким образом, вы хотите привязать свойство навигации объекта PurchaseOrder к объектам PurchaseOrderDelivery.Связи видны в метаданных, свойство навигации - нет.Я предполагаю, что он существует, и назовите его здесь POtoPODeliveries

В OData /PurchaseOrder('1234')/POtoPODeliveries, возвращая массив PurchaseOrderDeliverSet для этого конкретного PurchaseOrder 1234 (если реализовано правильно).

Путь свойства элемента сейчастребуется относительная привязка к существующей привязке элемента DetailView

path: "POtoPODeliveries"

Привязки в свойстве template всегда относятся к привязке элементов и нуждаются только в имени модели, если привязка элементаимеет название модели.

...