我有一个包含许多输入字段的片段。我想检查输入文本的输入字段的ID。当我做oEvent.getSource().getId()
时,
我得到"someId-controlId"
。我不确定"someId"
是什么。但是"-"
之后肯定是"controlId"
。任何人都可以建议如何将控件ID与我得到的输出分开,或者如何在控制器中提取控件ID?
答案 0 :(得分:0)
创建全局ID的方式depends on how the fragment was created。此外,这就是ID段之间当前的分隔符:
"---"
"--"
"-"
(例如,对于通过聚合绑定的克隆实例)示例输出:
"componentId---viewId--controlId-__clone0"
分隔符的数量,它们的插入方式,甚至用于分隔每个段的字符可能会在以后的版本中更改。事实上,documentation中有一个警告,不要依赖当前的语法:
不依赖于特定的前缀语法,因为它可能会在某些时候发生变化。
更糟糕的是,在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>
然后可以通过API data
:
onChange: function(oEvent) {
const inputIsFrom = oEvent.getSource().data("is"); // returns: "A", "B", or "C"
// ...
},