sapui5 - 不同控制器中使用的相同片段 - 打开时出现重复 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();
},
解决方案
如果您在其中使用了任何 ID,您检查过您的 fragment.xml 吗?如果是,您必须确保在再次打开之前销毁该片段。
推荐阅读
- java - 在Android Studio片段之间切换时地图片段不隐藏
- apache-kafka - 重试逻辑在 kafka 生产者中如何工作?
- google-colaboratory - UDP套接字程序
- flutter - 使用脚手架主体内的按钮颤动打开抽屉
- jdbc - Kafka Sink ValueToKey 并创建 Tombstone 消息
- python - 如何在多列上自行加入 pandas 数据框并使用新列创建新框架(新列仅包含右侧的信息)
- vb.net - 同步两个不同内容的Controls的Scroll位置
- flutter - Dart 流(Flutterfire):我应该在映射之前还是之后使用 where 过滤器?
- angular - Angular 的动态输入文本 (ngModel) 和变量。输入滞后?
- python - 使用 PyMongo 进行推文分析 - 在计算主题标签之前小写