Как использовать объект json из локального файла в качестве модели данных в openui5? - PullRequest
1 голос
/ 23 июня 2019

У меня проблема с примером https://github.com/SAP/openui5-masterdetail-app

Я хотел бы использовать два файла json Objects.json и LineItems.json в папке «webapp / localService / mockdata»

У меня локальная установка (без WEB IDE). Работает нормально.

Я внес следующие изменения

WebApp / manifest.json

...

"resources": "resources.json",
"dataSources": {
    "tableData_alias": {
        "uri": "localService/mockdata/Objects.json",
        "type": "JSON"
    }
}

...

"models": {
    "i18n": {
        "type": "sap.ui.model.resource.ResourceModel",
        "settings": {
            "bundleName": "sap.ui.demo.masterdetail.i18n.i18n"
        }
    },
    "tableData": {
        "type": "sap.ui.model.json.JSONModel",
        "dataSource": "tableData_alias",
        "preload": true
    }
},

WebApp / вид / Master.view.xml

...
items="{
        path: 'DataModel>/',
        sorter: {
            path: 'Name',
            descending: false
        },
        groupHeaderFactory: '.createGroupHeader'
    }"
...

WebApp / контроллер / Master.controller.js * ** 1022 тысяча двадцать-одна * onInit : function () { var dataModel = this.getOwnerComponent().getModel("tableData"); this.getView().setModel(dataModel, "DataModel"); // Control state model var oList = this.byId("list"), ... Файл Objects.json будет загружен, но основная таблица не отображается. (Список деталей - это следующий шаг для меня позже ...)

Файл json

В консоли браузера я получаю следующую ошибку: _Не удалось загрузить компонент для контейнера контейнера. Причина: TypeError: Невозможно получить свойство 'attachMetadataFailed' с неопределенной или нулевой ссылкой - _

Пожалуйста, помогите, что не правильно. (Может весь пример на github?)

Ответы [ 2 ]

0 голосов
/ 26 июня 2019

Попробуйте это решение ниже.Я не вижу никакой ошибки в коде, но вы устанавливаете модель json для своего контекстного представления в вашей функции onInit , которая может быть пустой.

В вашем webapp / view / Master.view.xml вы можете напрямую связать путь агрегации item , используя модель, которую вы определили в своем manifest.json

 ...
items="{
        path: 'tableData>/',
        sorter: {
            path: 'Name',
            descending: false
        },
        groupHeaderFactory: '.createGroupHeader'
    }"
...

Спасибо.

0 голосов
/ 26 июня 2019

В webapp/controller/Master.controller.js, попробуйте сделать это в onAfterRendering: function(), а не onInit: function()

Спасибо

...