Sapui5 sap.ui.getCore().byId()不返回任何元素

Sapui5 sap.ui.getCore().byId()不返回任何元素,sapui5,Sapui5,我创建了一个UI5应用程序,现在想使用sap.ui.getCore().byId(id)访问现有控件。在同一控制器/视图中,我可以通过this.byId(id)访问它们,但要访问其他文件(例如控制器)中的控件,我需要sap.ui.getCore().byId(id) 但是,虽然sap.ui.getCore()返回一个核心对象,但我无法通过它的byId()函数访问控件,取而代之的是未定义的。我已经建立了一个UI5应用程序,在那里我没有这个函数调用的问题 有什么我必须配置才能工作的吗?如果查看视图的

我创建了一个UI5应用程序,现在想使用
sap.ui.getCore().byId(id)
访问现有控件。在同一控制器/视图中,我可以通过
this.byId(id)
访问它们,但要访问其他文件(例如控制器)中的控件,我需要
sap.ui.getCore().byId(id)

但是,虽然
sap.ui.getCore()
返回一个核心对象,但我无法通过它的
byId()
函数访问控件,取而代之的是
未定义的
。我已经建立了一个UI5应用程序,在那里我没有这个函数调用的问题


有什么我必须配置才能工作的吗?

如果查看视图的
byId
-方法,您可以看到它在视图ID前面,它实际上调用
sap.ui.getCore().byId(this.createId(ID))


这样,您就可以多次实例化视图,而无需重复ID。为了从外部访问控件,您需要视图以便调用
view.byId(id)
,或者您必须手动将视图的id与id连接起来,如下所示:
sap.ui.getCore().byId(viewId+“-”+id)

这有帮助吗?谢谢,但是我的控件有ID,它们已经存在了。我的问题是sap.ui.getCore().byId()由于某种原因无法工作。我有其他应用程序,但我不明白为什么在这个应用程序中它不能正常工作。你能发布代码说明它在哪里工作,在哪里不工作吗?要检查它为什么不能工作,我们需要查看相关代码,但通常我会避免让其他控制器更改他们不负责的视图。一种更为解耦的方法是使用EventBus发布发生的事情,并让负责的控制器订阅和处理它。我的印象是,使用sap.ui.getCore().byId(“xxx”),我可以在任何地方检索id为xxx的控件。viewId是DOM id的一部分,但不是控件id的一部分,因为在我看来,任何时候都只能有一个控件id为xxx。相反,所有控件id都是唯一的。您可以通过调用sap.ui.getCore().byId(id)获得任何控制。当您在视图中创建控件(例如在XML中)时,您在XML中放置的id将与视图的id一起前置,以便创建唯一的id。示例:new sap.m.Button(“abc”)创建一个ID为“abc”的按钮。在id为“def”的XML视图中,id为“abc”的按钮将被创建为“def--abc”。否。全局Id必须是唯一的,因此不能创建两个Id为“abc”的控件,这正是我们使用视图Id作为前缀的原因。通常DOM Id与控件Id相同。您可以通过在XML视图中创建Id为“abc”的控件来测试这一点,然后调用控制器:this.byId(“abc”).getId()您将获得可用于sap.ui.getCore().byId()的真实ID。现在我知道了,谢谢!对于将来有这个问题的人,这里有一个Doc链接:createId()总是相对于调用它的视图/控制器工作。这不会因部署目标而改变。