首页 > 解决方案 > 不同控制器中使用的相同片段 - 打开时出现重复 ID 错误

问题描述

我有一个在 2 个不同视图中使用过的 XML 片段。当我单击项目A的表行时- 视图A打开,如果我单击该页面上的“保存” - 片段打开。根据用户在片段上执行的操作(它有 2 个按钮 - 是/取消),下一步会发生,但我会在流程结束时关闭片段。如果我单击表中的项目B - 视图B打开。如果我单击此页面上的“保存”,预期应该打开相同的片段。但相反,我得到一个重复的 ID 错误

一个观察:如果我在两者中使用不同的片段(设计相似),控制器问题就解决了。一切正常。但如果相同,则片段错误。如果工作不正常,不知道为什么要关闭。试过destroy()但后来它给了我setInititalFocus()未定义的类似错误的东西。

Controller A.js类似的代码在 ControllerB.js

onManageConfirmation: function(oEvent) {
  var ccModelObj = {
    "headerText": "Hello",
    "operation": "deleteItem"
  };
  if (!this.ABC) {
    var ccModel = new JSONModel(); // required "sap/ui/model/json/JSONModel"
      this.ABC= sap.ui.xmlfragment("...fragments.commons.ManageConfirmation", this);
    this.getView().addDependent(this.ABC);
    this.ABC.setModel(ccModel);
  }
  this.ABC.getModel().setData(ccModelObj);
  this.ABC.open();
},

onYes: function(oEvent) {
  this.ABC.close();
},

onCancel: function(oEvent) {
// in fragment also added onClose property and calling this method only
  this.ABC.close();
},

标签: sapui5

解决方案


如果您在其中使用了任何 ID,您检查过您的 fragment.xml 吗?如果是,您必须确保在再次打开之前销毁该片段。


推荐阅读