sapui5 - 获取 XML 片段中定义的控件 ID
问题描述
我有一个包含许多输入字段的片段。我想检查输入文本的输入字段的 ID。当我这样做时oEvent.getSource().getId()
,我得到了"someId-controlId"
。我不确定那"someId"
是什么。但之后"-"
是"controlId"
肯定的。谁能建议如何将控件 ID 从我得到的输出中分离出来,或者如何在控制器中提取控件 ID?
解决方案
全局 ID 的创建方式取决于片段的创建方式。此外,这就是当前在 ID 段之间使用分隔符的方式:
- 组件附加
"---"
- 视图追加
"--"
- 控件/元素附加
"-"
(例如,通过聚合绑定克隆实例)
样本输出:
"componentId---viewId--controlId-__clone0"
分隔符的数量、它们的插入方式,甚至是用于分隔每个段的字符都可能在以后的版本中发生变化。事实上,文档中有一条警告不要依赖当前的语法:
不要依赖特定的前缀语法,因为它可能会在某些时候发生变化。
更糟糕的是,当id
定义中确实使用了这样的分隔符时,不会引发任何错误。假设分隔符可能包含在id
定义中,使得从全局 ID 中提取正确的部分变得更加困难和不可预测。
为了使每个控件可区分,更好的方法是添加CustomData。
<Input change=".onChange">
<customData>
<core:CustomData key="is" value="A" />
</customData>
</Input>
<Input change=".onChange">
<customData>
<core:CustomData key="is" value="B" />
</customData>
</Input>
<Input change=".onChange">
<customData>
<core:CustomData key="is" value="C" />
</customData>
</Input>
然后可以通过APIdata
在控制器中检索自定义数据:
onChange: function(oEvent) {
const inputIsFrom = oEvent.getSource().data("is"); // returns: "A", "B", or "C"
// ...
},
推荐阅读
- javascript - 在Node JS for循环中增加SQL结果[0]
- java - 如何使用 Spring WebClient 启用 cookie 持久性
- android - 如何解析 Json POST 请求 onResponse Stringrequest 数据
- swift - 如何解释汇编中调用堆栈中的快速(或一般)闭包?
- javascript - 单击标签时如何检查是否按下了命令键
- authentication - 使用带有曲线 secp224k1 的私钥签署 ECDSA
- excel - 忽略数组公式中的过滤单元格
- python-3.x - 我在使用 curve_fit 函数时遇到了一些麻烦
- python - 如何在 kivy 中导入超过 1 个(多个)图像?
- github - 如何在现有存储库中上传?