getComponent

2020-08-31 09:23发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在使用Component方法构建应用程序,这很棒。 但是现在我面临的问题是,我无法从组件内部访问父(或任何其他)组件。 我知道核心上有一个getComponent方法,但是

 sap.ui.getCore()。getComponent(" myComponentId")
 

什么都没给我。

 sap.ui.getCore()。getRootComponent()
 

也不返回任何内容。

这是我用来创建组件的代码:

 新的sap.ui.core.ComponentContainer(" componentId",{
         高度:" 100%",
         宽度:" 100%",
         名称:" com.component.my.nice",
         broadcastModel:正确
       });
 

整个事情都在sap.m.Shell + sap.m.SplitApp中运行。 在我的index.html中,将SplitApp创建为Shell的根组件,如下所示:

 new sap.m.Shell(" Shell",{
             应用:新的sap.ui.core.ComponentContainer(" RootContainer",{
               高度:" 100%",
               宽度:" 100%",
               名称:" com.component.root",
               displayBlock:" true",
               模式:" HideMode"
             })
           })。placeAt(" content");
 


我在做什么错,为什么我不能查询组件? 如何访问常规组件注册表?


欢呼

基督徒

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我正在使用Component方法构建应用程序,这很棒。 但是现在我面临的问题是,我无法从组件内部访问父(或任何其他)组件。 我知道核心上有一个getComponent方法,但是

 sap.ui.getCore()。getComponent(" myComponentId")
 

什么都没给我。

 sap.ui.getCore()。getRootComponent()
 

也不返回任何内容。

这是我用来创建组件的代码:

 新的sap.ui.core.ComponentContainer(" componentId",{
         高度:" 100%",
         宽度:" 100%",
         名称:" com.component.my.nice",
         broadcastModel:正确
       });
 

整个事情都在sap.m.Shell + sap.m.SplitApp中运行。 在我的index.html中,将SplitApp创建为Shell的根组件,如下所示:

 new sap.m.Shell(" Shell",{
             应用:新的sap.ui.core.ComponentContainer(" RootContainer",{
               高度:" 100%",
               宽度:" 100%",
               名称:" com.component.root",
               displayBlock:" true",
               模式:" HideMode"
             })
           })。placeAt(" content");
 


我在做什么错,为什么我不能查询组件? 如何访问常规组件注册表?


欢呼

基督徒

付费偷看设置
发送
6条回答
打个大熊猫
1楼 · 2020-08-31 09:26.采纳回答

嗨,基督徒

为了提供组件的ID,您必须在组件实例化时对其进行设置,例如 在以下代码段中

var oComp = sap.ui.getCore()。createComponent({

名称:" my.component.class",

id:" myComp",

高度:" 100%"

});

var oComponentContainer = new sap.ui.core.ComponentContainer({

组件:oComp

});

oComponentContainer.placeAt(" content");

然后您可以稍后通过

访问该组件

sap.ui.getCore()。getComponent(" myComp")

哎,真难
2楼-- · 2020-08-31 09:47

非常感谢Leonhard。 它现在适用于getComponent。 getRootComponent仍返回未定义。 知道如何使它工作吗?

亦是此间程序员
3楼-- · 2020-08-31 09:50

为避免此问题,我将此方法添加到了所有控制器中:

     getComponent:function(){
         var sComponentId = sap.ui.core.Component.getOwnerIdFor(this.getView());
         返回sap.ui.component(sComponentId);
     },
 
Baoming ROSE
4楼-- · 2020-08-31 09:25

您通常不需要将其放入控制器中。 通常,您应该可以使用:

this.getOwnerComponent()到组件。

Alex

骆驼绵羊
5楼-- · 2020-08-31 09:26

嗨,克里斯蒂安

您尝试过sap.ui.getCore()。byId('componentId')吗?

-D

d56caomao
6楼-- · 2020-08-31 09:42

我使用下面的代码片段访问根组件

 sap.ui.core.Component.getOwnerComponentFor(this.getView())

使用此方法,我们也可以访问根组件模型和路由器。 我确实在子应用基本控制器文件中创建了辅助函数,以便可以在整个应用中重用它。

/**
 *返回根组件实例
 */
 getRootComponent:function(){
   返回sap.ui.core.Component.getOwnerComponentFor(this.getView());
 },

一周热门 更多>