不同控制器中使用的相同片段 - 打开时重复ID错误[重复]

问题描述 投票:1回答:2

这个问题在这里已有答案:

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

一个观察结果:如果我在两者中使用不同的片段(设计上类似),则解决控制器问题。一切正常。但如果相同,碎片错误。不确定为什么关闭,如果不能正常工作。尝试destroy(),但后来它给了我setInititalFocus() undefined这样的错误。

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
2个回答
1
投票

这里只是一个疯狂的猜测,但你的控件中引用了两个不同的东西。

当您在控制器A中一切都像魅力一样,但然后您加载控制器B并检查this.ABC返回false并且您的代码尝试加载已经在DOM的片段,因此重复Id错误。


1
投票

如果你在里面使用过任何id,你有没有检查过你的fragment.xml?如果是,则必须确保在再次打开片段之前销毁片段。

© www.soinside.com 2019 - 2024. All rights reserved.