我正在用sapui5创建一个应用程序(我是这个库的新应用程序),我遇到以下奇怪错误:
必须用模板可标记共享模板:绑定信息中的true -
编码,原因可以在cartelleDisponibili: cartelleObtained
中找到以下承诺:
new Promise(
function(resolve, reject) {
cartellaData.results.forEach((cartella, index) => {
oModel.read("/SheetSet", {
filters: [
new sap.ui.model.Filter("ZUSERNAME", sap.ui.model.FilterOperator.EQ, userData.Username),
new sap.ui.model.Filter("ZTYPE", sap.ui.model.FilterOperator.EQ, 'P'),
new sap.ui.model.Filter("ZCARTELLA", sap.ui.model.FilterOperator.EQ, cartella.ZCARTELLA),
],
success: function(sheetData){
var sheetsResults = [];
for(var sheet = 0; sheet < sheetData.results.length; sheet++){
sheetsResults.push({
"Sheet": sheetData.results[sheet].ZSHEET,
"CanWrite": sheetData.results[sheet].ZCANWRITE ? true : false,
});
}
cartelle.push({
"Cartella": cartella.ZCARTELLA,
"CanWrite": cartella.ZCANWRITE ? true : false,
"Sheets": sheetsResults,
});
},
error: function(oEvent) {}
});
});
resolve(cartelle);
}).then(function(cartelleObtained) {
var selectedUser = {
title: `Utente ${userData.Username}`,
editUsername: false,
progNavi: false,
progProd: true,
userMainCredentials: {
userName: userData.Username,
type: "P",
isEnabled: userData.isAbilitato,
isAdmin: userData.isAdmin,
firstName: userData.Nome,
lastName: userData.Cognome,
},
cartelleDisponibili: cartelleObtained,
};
var oJSONModelNewUser = new JSONModel(selectedUser);
_this.getView().setModel(oJSONModelNewUser, "userModel");
if (!_this._dShowUser) {
_this._dShowUser = sap.ui.xmlfragment("cabot.ui.wt.fragment.ShowUser", _this);
_this.getView().addDependent(_this._dShowUser);
}
_this._dShowUser.open();
});
如果我直接传递到 cartelleDisponibili
,则不会抛出错误。我还需要解决此问题,因为这在UI中引起了一些奇怪的行为。我该如何解决此问题?
您必须使用UI5的旧版本。至少,由于1.38以来,错误消息不再是源代码的一部分。改进的错误消息说更多:
在克隆操作期间,发现一个模板都没有标记"模板镜头:true"one_answers" templateSharable:false"。该框架不会破坏模板。这可能导致错误(例如重复ID)或内存泄漏。
这表明,在某个地方,您还必须定义控件内的聚合绑定,该控件被用作在上层层次结构级别的另一个聚合绑定的模板。
。有两种解决方案可以摆脱错误消息(取决于您想要的内容):
- 如果您想对模板控制的生命周期有更多的控制,请在每个聚合绑定信息对象中明确启用
templateShareable
(带有值true
)。 - 但是,如果您不自己处理此类模板,请在每个聚合绑定信息对象中明确禁用
templateShareable
(带有值false
)来处理它们。
有关更多信息,请查看绑定模板的文档生命周期以及Nabi的此博客文章。