我怎样才能销毁视图?
How can I destroy a View?
我想在有人使用后退按钮时立即销毁一个视图和相应的控制器。这将使我有可能避免重置功能,并且我可以在新控制器的 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();
旧答案 - 不再推荐
我想不通,为什么会出现这些异常;独立于 destroy() 或 deregister() 调用。
但是如果有人陷入同样的问题。作为暂时的解决方法,您可以通过 bootstrap 从框架中停用 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
有很多变化,这个错误很早以前就被修复了。因此我更新了答案。但是 Views/Controller 现在由路由器处理
如果你需要这个,你就没有遵循最佳实践。
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>
我想在有人使用后退按钮时立即销毁一个视图和相应的控制器。这将使我有可能避免重置功能,并且我可以在新控制器的 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();
旧答案 - 不再推荐
我想不通,为什么会出现这些异常;独立于 destroy() 或 deregister() 调用。
但是如果有人陷入同样的问题。作为暂时的解决方法,您可以通过 bootstrap 从框架中停用 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
有很多变化,这个错误很早以前就被修复了。因此我更新了答案。但是 Views/Controller 现在由路由器处理
如果你需要这个,你就没有遵循最佳实践。
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>