Как устранить ошибку: «[объект объекта]» недопустимо для агрегации «persoService» персонализации таблицы ManagedObject - PullRequest
0 голосов
/ 05 октября 2019

Я реализую персонализацию таблицы (sap.m.TablePersoController), которая сохраняет пользовательские настройки таблицы в службах ushell Fiori Launchpad.

Но я вижу ниже ошибку, когда я запускаю приложение в Fiori Launchpad.

Error: "[object Object]" is not valid for aggregation "persoService" of ManagedObject sap.m.TablePersoController#oTablePerso

Не могли бы вы сообщить мне, что является проблемой и как ее решить.

Ниже приведен код для того же:

var oPersonalizationService= window.parent.sap.ushell.Container.getService("Personalization"); 

var oPersId = {
container : "AppPersSample2",
item : "mobiletable"
}; 

var oMobileTable = sap.ui.getCore().byId("idTable"); 

var oStartPersButton = sap.ui.getCore().byId("idButton");

var oPersonalizer = oPersonalizationService.getPersonalizer(oPersId);

console.log("oPersonalizer is:"+oPersonalizer);

// Create a table personalization controller

jQuery.sap.require("sap.m.TablePersoController");

jQuery.sap.require("sap.m.TablePersoDialog");

var oTablePersoController = new sap.m.TablePersoController("oTablePerso",{
table : oMobileTable,
persoService : oPersonalizer
});

// Use the personalization data to configure the table accordingly

oTablePersoController.activate();

1 Ответ

1 голос
/ 06 октября 2019

Я действительно не знаю, откуда исходит ошибка, но для отладки вы можете разбить эту строку:

var oTablePersoController = new sap.m.TablePersoController("oTablePerso",{ table : oMobileTable, persoService : oPersonalizer });

на:

        var oPersonalizationService = sap.ushell.Container.getService("Personalization");
        var oProvider = sap.ushell.Container.getService("Personalization").getPersonalizer(oPersId);
        this._oTPC = new sap.m.TablePersoController({});
        this._oTPC.setPersoService(oProvider);
        this._oTPC.setTable(oMobileTable);

Просто попробуйте установить точки останова.

В качестве примера, вот моя полная функция для моего интерфейса с версией 1.60.5

        createPersonalization: function (viewName) {
        var oTable = this.table;
        // Create a persistence key
        var oPersId = {
            container: viewName,
            item: viewName
        };

        // Get a personalization service provider from the shell (or create your own)
        this.oPersonalizationService = sap.ushell.Container.getService("Personalization");
        var oProvider = sap.ushell.Container.getService("Personalization").getPersonalizer(oPersId);

        this._oTPC = new sap.ui.table.TablePersoController({
            // table: oTable,
            // persoService: oProvider
        });
        this._oTPC.setPersoService(oProvider);
        this._oTPC.setTable(oTable);
    },
...