Sapui5 共享模板必须标记为templateShareable:true错误

Sapui5 共享模板必须标记为templateShareable:true错误,sapui5,Sapui5,我正在使用SAPUI5创建一个应用程序(我是这个库的新手),运行时出现以下奇怪错误: 共享模板必须在绑定信息中标记为templateShareable:true- 代码方面,原因可在以下承诺中找到: new Promise( function(resolve, reject) { cartellaData.results.forEach((cartella, index) => { oModel.read("/SheetSet", { filters

我正在使用SAPUI5创建一个应用程序(我是这个库的新手),运行时出现以下奇怪错误:

共享模板必须在绑定信息中标记为templateShareable:true-

代码方面,原因可在以下承诺中找到:

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();
});
新承诺(
功能(解析、拒绝){
cartella Data.results.forEach((cartella,索引)=>{
oModel.read(“/SheetSet”{
过滤器:[
新的sap.ui.model.Filter(“ZUSERNAME”,sap.ui.model.FilterOperator.EQ,userData.Username),
新的sap.ui.model.Filter(“ZTYPE”,sap.ui.model.FilterOperator.EQ,'P'),
新的sap.ui.model.Filter(“ZCARTELLA”,sap.ui.model.FilterOperator.EQ,cartella.ZCARTELLA),
],
成功:函数(sheetData){
var sheetsResults=[];
对于(var sheet=0;sheet

如果我直接将项目数组传递给
carteledisponibili
,则不会抛出错误。我还需要解决这个问题,因为这会导致UI中出现一些奇怪的行为。如何解决此问题?

您必须使用旧版本的UI5。至少,错误消息不再是源代码的一部分。改进后的错误消息说明了更多内容:

在克隆操作期间,发现模板既没有标记为“templateShareable:true”也没有标记为“templateShareable:false”。框架不会破坏模板。这可能会导致错误(例如重复ID)或内存泄漏

这表明,在某个地方,您还必须在控件内定义一个聚合绑定,该控件用作上层层次结构中另一个聚合绑定的模板

有两种解决方案可以消除错误消息(取决于您想要什么):

  • 如果希望对模板控件的生命周期有更多的控制,请在每个控件中显式启用
    templateShareable
    (值为
    true
  • 但是,如果您不亲自处理这些模板,请让UI5通过在每个聚合绑定信息对象中显式禁用
    templateShareable
    (值为
    false
    )来处理它们
有关更多信息,请参阅文档和作者。

可能的副本