我想将一个liveChange事件附加到Input基于可重用的字段Fragment(Dialog演练步骤 19:重用对话框)。
在 XML 模板中HelloDialog.fragment.xml我添加了:
<Input
id = "input-b"
type = "Password"
liveChange = ".onLiveChange"
placeholder = "Enter your password" />
Run Code Online (Sandbox Code Playgroud)
在片段的控制器中HelloDialog.js我添加了:
onLiveChange: function (oEvent) {
const sNewValue = oEvent.getParameter("value");
this.byId("getValue").setText(sNewValue);
console.log("sNewValue");
}
Run Code Online (Sandbox Code Playgroud)
然后我在 DevTools 中在此方法中设置一个断点,并尝试在相关内容中键入文本Input,并期望断点将被触发,但什么也没有发生。
我尝试onLiveChange从我调用此片段的位置添加到视图的控制器中Component.js,但仍然没有反应。
为什么onLiveChange我的情况没有触发?在 SAP示例中:输入 - 值更新一切正常,但它们使用常规视图,而不是基于片段的对话框。
为了启用在片段定义中分配的触发事件处理程序,在调用创建片段的 API 时应传递控制器实例(或包含处理程序的普通对象)。
\nthis作为对当前控制器实例的引用给出:
Controller#loadFragment推荐)this.loadFragment({ name: "my.Fragment" }); // See API reference for more options\nRun Code Online (Sandbox Code Playgroud)\n在上面的API中,id和默认controller分别是this.getView().getId()和。作为奖励,加载的片段也会自动添加到视图的聚合中(除非)。创建的 ManagedObject 还包含所有者 ID,框架可以使用该所有者 ID 应用任何现有扩展 \xe2\x80\x94,无需显式包装。this <dependents>addToDependents: falseloadFragmentsap.ui.core.Component#runAsOwner
\xe2\x9a\xa0\xef\xb8\x8f 要启用扩展,以下 API必须用Component#runAsOwner.
Fragment.load// Fragment required from "sap/ui/core/Fragment"\nthis.getOwnerComponent().runAsOwner(() => Fragment.load({\n id: this.getView().getId(),\n name: "my.Fragment",\n controller: this, // or a plain object that contains the event handlers\n}));\nRun Code Online (Sandbox Code Playgroud)\nsap.ui.xmlfragmentsap.ui.xmlfragment(this.getView().getId(), "my.Fragment", this); // Deprecated!Run Code Online (Sandbox Code Playgroud)\n相关文档主题:片段的实例化
\n| 归档时间: |
|
| 查看次数: |
2146 次 |
| 最近记录: |