0

一旦有人使用后退按钮,我想销毁视图和相应的控制器。这将使我有可能避免重置功能,并且我可以在新控制器的 init 方法中使用用户创建的内容。

但是 sap-ui-core 正在抛出adding element with duplicate id错误消息,我做错了什么?

var oView = sap.ui.view({
    id: id,
    viewName: "newController",
    type: sap.ui.core.mvc.ViewType.XML
})
oView.destroy();

oView = sap.ui.view({
    id: id,
    viewName: "newController",
    type: sap.ui.core.mvc.ViewType.XML
})
oView.destroy();
4

1 回答 1

1

旧答案 - 不再推荐

我不知道为什么会出现这些异常;独立于 destroy() 或 deregister() 调用。

但是,如果有人陷入同样的​​问题。您可以通过引导程序从框架中停用 DuplicatedIds 检查作为临时解决方法。

<script src="resources/sap-ui-core.js"
                id="sap-ui-bootstrap"
                data-sap-ui-libs="sap.ui.commons, sap.m"
                data-sap-ui-theme="sap_bluecrystal"
                data-sap-ui-noDuplicateIds="false"
                >
</script>

更新 UI5 1.8x.xx

有很多变化,这个错误很久以前就修复了。因此我更新了答案。但是视图/控制器现在由路由器处理

如果你需要这个,你不遵循最佳实践。

sap.ui.controller("view1.initial", { });

var oView = sap.ui.xmlview("a", { viewContent: jQuery("#view1").html() } )
oView.destroy();

oView = sap.ui.xmlview("a", { viewContent: jQuery("#view1").html() } )
oView.destroy();
<script id="sap-ui-bootstrap"
src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
data-sap-ui-theme="sap_bluecrystal"
data-sap-ui-xx-bindingSyntax="complex"
data-sap-ui-compatVersion="edge"
data-sap-ui-libs="sap.m"></script>

<div id="uiArea"></div>

<script id="view1" type="ui5/xmlview">
  <mvc:View controllerName="view1.initial" xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" > 
    <Button />
  </mvc:View>
</script>

于 2015-09-20T05:35:09.277 回答