Methods assigned in XML fragment not triggered(未触发XML片段中分配的方法)
问题描述
我要将liveChange事件附加到基于Fragment的Dialog(Walkthrough Step 19: Reuse Dialogs)的Input字段。
在XML模板HelloDialog.fragment.xml中,我添加了:
<Input
id = "input-b"
type = "Password"
liveChange = ".onLiveChange"
placeholder = "Enter your password" />
在分片的控制器HelloDialog.js中,我添加了:
onLiveChange: function (oEvent) {
const sNewValue = oEvent.getParameter("value");
this.byId("getValue").setText(sNewValue);
console.log("sNewValue");
}
然后,我在DevTools中设置了此方法中的断点,并尝试在相关的Input中键入文本,预计将触发断点,但没有任何反应。
我已尝试将onLiveChange添加到调用此片段的视图控制器中,也尝试将Component.js添加到Component.js,但仍然没有反应。
onLiveChange在我的情况下没有触发?在SAPSample: Input - Value Update中一切正常,但它们使用常规视图,而不是基于片段的对话框。
推荐答案
以启用触发方法(例如事件处理程序、格式化程序等.)从分片开始,在创建分片时,控制器实例(this)或一个纯对象应该分配给选项controller。使用API loadFragment (available since 1.93),控制器实例默认添加为侦听器对象。
给定this作为对当前控制器实例的引用:
从UI5 1.93开始
this.loadFragment({ name: "my.Fragment" });
上述接口中,id和controller默认分别为this.getView().getId()和this。并且加载的片段也自动添加到视图的<dependents>聚合中(除非addToDependents: false)。不需要显式分配它们。
Instantiation of Fragments主题中也提到了使用loadFragment的优点。
从UI5 1.58开始
// Fragment required from "sap/ui/core/Fragment"
Fragment.load({
id: this.getView().getId(),
name: "my.Fragment",
controller: this, // or a plain object that contains the event handlers
});
UI5 1.56及更低版本
// Deprecated!
sap.ui.xmlfragment(this.getView().getId(), "my.Fragment", this);
这篇关于未触发XML片段中分配的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:未触发XML片段中分配的方法
基础教程推荐
- CORS:当凭据标志为真时,无法在 Access-Control-Allow-Origin 中使用通配符 2022-01-01
- 即使每次插入第一个输入的值不同,第二个输入仍显示相同的输入值 2022-01-01
- 逻辑运算符 ||在 javascript 中,0 代表 Boolean false? 2022-01-01
- 使用 jQuery 在悬停时交换 DIV 类 2022-01-01
- 在 Javascript 中使用 Fetch API 上传文件并显示进度 2022-01-01
- 当木偶师打开Chrome时,不能使用Chrome扩展 2022-01-01
- 从快速中间件中排除路由 2022-01-01
- 最佳动态 JavaScript/JQuery 网格 2022-01-01
- 带角度的选项卡:仅使用 $http 在单击时加载选项卡 2022-01-01
- HTML5 画布调整为父级 2022-01-01
