未触发XML片段中分配的方法 [英] Methods assigned in XML fragment not triggered

查看:27
本文介绍了未触发XML片段中分配的方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要将liveChange事件附加到基于FragmentDialog(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" });

上述接口中,idcontroller默认分别为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片段中分配的方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆