Sapui5 如何解决错误:“[object]”对于ManagedObject表个性化的聚合“persoService”无效
我正在实施表个性化sap.m.TablePersoController,它在Fiori Launchpad的ushell服务上保留用户特定的表设置 但当我在Fiori Launchpad中运行应用程序时,我看到以下错误 错误:[对象对象]对于ManagedObject sap.m.TablePersoControllerRotablePerso的聚合persoService无效 你能告诉我是什么问题以及如何解决吗 以下是相同的代码:Sapui5 如何解决错误:“[object]”对于ManagedObject表个性化的聚合“persoService”无效,sapui5,sap-fiori,Sapui5,Sap Fiori,我正在实施表个性化sap.m.TablePersoController,它在Fiori Launchpad的ushell服务上保留用户特定的表设置 但当我在Fiori Launchpad中运行应用程序时,我看到以下错误 错误:[对象对象]对于ManagedObject sap.m.TablePersoControllerRotablePerso的聚合persoService无效 你能告诉我是什么问题以及如何解决吗 以下是相同的代码: var oPersonalizationService= wi
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();
我真的不知道错误是从哪里来的,但是为了调试,您可以拆分这行:
var oTablePersoController = new sap.m.TablePersoController("oTablePerso",{ table : oMobileTable, persoService : oPersonalizer });
进入:
试着设置断点
举个例子,下面是我的完整功能,即1.60.5版的ui.table
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);
},
嗨,玛丽安,我试过你的建议了。此行抛出错误:this.\u oTPC.setPersoServiceProvider;我之前得到的错误仍然存在。好的,要么是来自oPersoId,要么是我的声明是var oPersId={container:viewName,item:viewName};也许你有一个不同的版本,试着看看文档,有一个样本太高玛丽安,我没有使用视图或组件等。只有一个index.html文件,我已经创建了表,并想做个性化。你能给我提个建议吗。持久化键部分中的名称是否应为视图名称?或者可能是什么?谢谢。viewName只是我函数中的一个变量,我使用字符串,就像你一样。您是否在api参考或此处的示例中尝试过该示例:?嗨,Marian,问题似乎也出在这一行:var oPersonalizationService=window.parent.sap.ushell.Container.getServicePersonalization。实际上,我的index.html文件存在于iFrame中,无法访问ushell服务。所以,如果我不使用window.parent,我会在正常窗口中运行应用程序时看到错误。如果我在Fiori launchpad中运行相同的应用程序,我会在table persocontroller部分中得到错误,因为我认为是同一个window.parent。欢迎提出任何建议。
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);
},