XML 片段中分配的方法未触发

Mik*_* B. 1 javascript sapui5

我想将一个liveChange事件附加到Input基于可重用的字段FragmentDialog演练步骤 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示例中:输入 - 值更新一切正常,但它们使用常规视图,而不是基于片段的对话框。

Bog*_*ann 6

为了启用在片段定义中分配的触发事件处理程序,在调用创建片段的 API 时应传递控制器实例(或包含处理程序的普通对象

\n

this作为对当前控制器实例的引用给出:

\n

自 UI5 1.93 起:(Controller#loadFragment推荐)

\n
this.loadFragment({ name: "my.Fragment" }); // See API reference for more options\n
Run 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

\n
\n

对于较旧的 UI5 版本或控制器不可访问

\n

\xe2\x9a\xa0\xef\xb8\x8f 要启用扩展,以下 API必须Component#runAsOwner.

\n

自 UI5 1.58 起:Fragment.load

\n
// 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}));\n
Run Code Online (Sandbox Code Playgroud)\n

UI5 1.56及以下版本:sap.ui.xmlfragment(已弃用)

\n\n
sap.ui.xmlfragment(this.getView().getId(), "my.Fragment", this); // Deprecated!
Run Code Online (Sandbox Code Playgroud)\n
\n

相关文档主题:片段的实例化

\n