_oDialog.destroy() 之后出现“setInitialFocusId”错误

2023-12-04

调用后再次尝试打开对话框片段时出现以下错误this._oDialog.destroy():

未捕获的类型错误:无法读取 null 的属性“setInitialFocusId”

我的问题就像这里所说的问题:关闭后如何清除dialog/xmlfragment内容?然而,解决方案显然似乎只是“不要使用属性 setInitialFocus”,我在代码中的任何地方都没有使用它。

控制器

openDialog: function() {
  if (!this._oDialog) {
    this._oDialog = sap.ui.xmlfragment("myFragmentPath", this);
    this.getView().addDependent(this._oDialog);
  }
  this._oDialog.open();
},

onExit: function () {
  if (this._oDialog) {
    this._oDialog.destroy();
  }
},

afterClose: function () {
  if (this._oDialog) {
    this._oDialog.destroy();
  }
},

handleClose: function (oEvent) {
  this._oDialog.close();
}

对话片段

<Dialog xmlns="sap.m" afterClose=".afterClose">
  <!-- ... -->
</Dialog>

主要 XML 视图

<Button press=".openDialog" />

附加信息:

  • 当以下情况时,控制器行中会出现错误消息:this._oDialog.open();叫做。
  • 我使用的是 sap 库版本 1.60.1。

if (this._oDialog) {
  this._oDialog.destroy();
  this._oDialog = null; // make it falsy so that it can be created next time
}

关闭后,对话框将在您的代码中被销毁。However, the this._oDialog仍然在那里。

Since this._oDialog不是一个假值,而只是一个被摧毁对话框实例,没有创建新的对话框openDialog()第二次。因此您正在尝试打开一个已损坏的对话框。

当对话框被销毁时,其内部oPopup is 设置为空,它解释了错误消息。


⚠️ Note

  1. 通常有无需销毁对话框关闭后。当视图被销毁时,对话框将自动销毁,因为片段依赖于视图。如果目的是重置数据值,请尝试解除绑定属性而不是每次都销毁并重新创建整个片段,这是相当昂贵的。

  2. 从UI5 1.56开始,工厂功能sap.ui.xmlfragment已弃用因为它通过同步 XHR 获取片段(阻塞主线程)。使用其中之一新的异步 API.

  3. 一个更简单的选择是以声明方式添加片段在你的视图定义中<core:Fragment fragmentName="..." type="XML" /> to the <dependents>聚集一定的控制。就像在这个示例中一样.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

_oDialog.destroy() 之后出现“setInitialFocusId”错误 的相关文章

  • createHTMLNotification() 替换

    我创建了一个 Chrome 扩展程序 其中使用createHTMLNotification 在所有内容之上显示一个窗口 然而 从 Chrome 28 开始 谷歌决定放弃createHTMLNotification 完全 为什么 谷歌 为什么
  • Angular UI 模式的范围问题

    我无法理解 使用角度 UI 模式的范围 虽然这里不是很明显 但我已经正确设置了模块和所有内容 据我所知 但这些代码示例尤其是我发现错误的地方 index html 其中重要部分 div class btn group div
  • 将 Javascript 对象的属性从 string 更改为 int

    我有一个对象数组 每个对象具有三个属性 年份 总计 人均 例子 0 Object per capita 125 8 total 1007 2 year 2009 这些属性是字符串 我想创建一个循环来遍历数组并将它们转换为 int 我尝试了以
  • 如何删除除任何特定 id 之外的元素

    假设有一个父 id 其中包含许多元素 我想删除除一个元素之外的所有元素 ex parent id children not id n remove
  • 如何阻止直接访问我的 JavaScript 文件?

    我使用 Minify 来缩小并缓存所有脚本请求 我只希望我的用户能够访问 JavaScript 文件的缩小版本 缩小位于www example com min我的脚本位于www example com scripts 如何阻止直接访问doc
  • 显示具有多个父代的 D3 树

    我目前有this http bl ocks org mbostock 4339083图已实现 我希望在描述具有多个父节点的子节点时保持结构和可折叠性 有没有办法做到这一点 我研究了力图 但我也想保留一组层次结构 这意味着 1 级的父级可以有
  • 如何在没有 jQuery 的情况下删除 Javascript 中的元素

    我试图通过以下方式从 DOM 中删除 Div a 标签嵌套在其中 我想我正在寻找的是 jQuery 的纯 Javascript 版本 div remove 这是html设置 div a href Click me to remove the
  • jQuery .push 到 .get 调用中的数组给出空结果

    谁能告诉我为什么下面给我一个空字符串 当我console log contentArray in the get 回调函数它显示数据 但是当我尝试在下面的代码中执行它时 结果为空 sectionArray contentArray func
  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • React Router v4 不渲染组件

    React Router v4 渲染组件存在问题 在应用程序初始加载时 它将呈现与 URL 相对应的正确组件 但是 任何后续的组件Link单击不会呈现所需的组件 图书馆 反应路由器 4 2 2 https reacttraining com
  • 如何使用角度材料在具有可扩展行的表格中创建嵌套垫表

    我有以下数据 id c9d5ab1a subdomain wing domain aircraft part id c9d5ab1a info mimetype application json info dependent parent
  • 计算三次贝塞尔曲线的弧长、曲线长度。为什么不工作?

    我正在用这个算法计算弧长 三次贝塞尔曲线的长度 function getArcLength path var STEPS 1000 gt precision var t 1 STEPS var aX 0 var aY 0 var bX 0
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • 使用 JavaScript 移动页面上的按钮

    我的按钮可以移动 但奇怪的是 我无法弄清楚偏移是否有问题 我希望我的按钮随着鼠标光标移动 但现在它的移动方式不是我想要的 有时它会消失 另外 创建的新按钮是重叠的 我不知道如何解决这个问题并拥有更好的外观 var coorA var coo
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • 表单发布请求并存储收到的数据

    我有一个非常简单的表单 在提交时发出发布请求
  • 聆听 Angular 2 中的元素可见性

    我正在为我的网络应用程序使用 Bootstrap 和 Angular 2 v4 我想监听指令中的元素以了解可见性变化 我的元素有一个可以隐藏其子元素的父元素hidden sm up我需要在每次隐藏或显示时触发一个函数 div hidden
  • 使用 Jade 评估自定义 javascript 方法 (CircularJSON)

    我想通过 Jade 将一个对象解析为客户端 JavaScript 通常这会起作用 script var object JSON parse JSON stringify object but my object is circular ht
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray

随机推荐