OPENUI5: данные привязки агрегата именованной модели не отображаются

после прочтения Поддержка нескольких моделей я попытался реализовать ее. При использовании именованной модели происходит привязка, но данные не отображаются.

// Контроллер

sap.ui.controller("view.apps.Apps", {

    onInit : function () {
        var oAppsModel = new sap.ui.model.json.JSONModel("model/apps.json");
        this.getView().setModel(oAppsModel, "apps");
    }
});

// Вид

sap.ui.jsview("view.apps.Apps", {

    getControllerName: function() {
        return "view.apps.Apps";
    },

    createContent: function(oController) {

        var oInboxList = new sap.m.List({
            inset: true,
            id: "appsList",
            headerText: "Apps"
        });

        oInboxList.bindItems("apps>/items", function(sID, oContext) {
            return new sap.m.StandardListItem({
                title: '{name}',
                description: '{name}'
            })
        });

        var oPage = new sap.m.Page({
            title: "Apps",
            content: [oInboxList]
        });

        return oPage;
    }
 });

// приложения.json

{
    "items": [{
        "name": "ABC",
        "view": ""
    }, {
        "name": "DEF",
        "view": ""
    }]
}

Это представление создает два пустых элемента списка. Когда я изменяю модель на безымянную модель и обновляю BindPath до /items, список правильно заполняется, и значения отображаются. Любые идеи о том, что не так с моим кодированием? Я бы очень хотел использовать названные модели.


person Kai    schedule 20.08.2014    source источник


Ответы (1)


Хорошо, просто перечитайте документацию. При использовании именованной модели для привязки необходимо префикс ВСЕХ привязок с именем именованной модели.

oInboxList.bindItems("apps>/items", function(sID, oContext) {
        return new sap.m.StandardListItem({
            title: '{apps>name}',
            description: '{apps>name}'
          })
    });
person Kai    schedule 20.08.2014
comment
Да, но только из-за имени setModel в вашем контроллере. Если вы просто сделаете this.getView().setModel(oAppsModel), вы можете пропустить имя в каждой привязке. Нейминг — это просто вариант при использовании нескольких моделей. - person Tim Gerlach; 20.08.2014
comment
Конечно. Предоставленный образец — это просто урезанная версия полного кода. - person Kai; 20.08.2014