问题:如何才能找到UI5发挥作用的代码的确切位置?
我们知道当我们创建一个新的UI5控件实例时,人工智能关键技术,1元云购,我们可以显式地将一个id传递给构造函数。在这种情况下,大数据分析软件有哪些,开发人员负责确保id是唯一的。
我们可以在呈现的页面中找到唯一的id。
另一种方法是我们不传递任何id,而是让UI5框架自动生成一个。
上面的代码将生成一个id为"\u button0"的按钮。
由于我不知道应该从哪里开始调试,我甚至不知道应该从哪个js文件开始,
因此,我打算手动给UI5框架带来一些麻烦,这样它就可以在Chrome开发工具控制台上发出一些抱怨消息,给我一些想法。所以我写了下面的代码。我假设第11行会由于控件id重复而导致一些错误。
当我刷新应用程序时,大数据好不好,在控制台中看到预期的错误消息。单击callstack中的第三帧:核心.注册表项查看其源代码:
下面我们可以了解UI5框架逻辑如何检测重复控件id:
1。有一个中央存储库来存储所有已注册的控件实例。看到了吗这是我的梦想第40711行
2。在第40700行中,使用要注册的新控件的id扫描中央存储库。如果byId返回1,则表示已经存在具有相同id的控件。检测到重复!
到目前为止我们还不知道id是在哪里生成的。类型oElement.getId文件并打印出该函数的源代码。然后我们知道对于每个控件实例,服务器云,它都有一个属性sId来存储它的ID.
在同一个JS文件中执行关键字搜索,其中registerement用关键字".sId"实现,只找到11个匹配项。
然后我们找到一个构造函数,它看起来就像我正在寻找的一样。在第29062行和第29064行之间实现自动ID生成逻辑(如果未明确指定)。设置断点验证我们的猜测。
在控制器中编写以下代码:
在运行时断点被触发。
ID片段"button",来自此.getName()在33711行。
UI5框架内部维护一个计数器作为每个控件id的后缀。
这就是为什么在每个UI5应用程序中都可以看到大量数字后缀的原因: