Sapui5 如何获取片段中不可见元素的id?

Sapui5 如何获取片段中不可见元素的id?,sapui5,Sapui5,我有一个片段对话框: <core:FragmentDefinition xmlns="sap.m" xmlns:f="sap.ui.layout.form" xmlns:core="sap.ui.core"> <Dialog title="{i18n>AddNewItem}" resizable="true" draggable="

我有一个片段对话框:

<core:FragmentDefinition
    xmlns="sap.m"
    xmlns:f="sap.ui.layout.form"
    xmlns:core="sap.ui.core">
    <Dialog title="{i18n>AddNewItem}" resizable="true" draggable="true">
        <content>
            <MessageStrip
                id="failMsg"
                visible="false"
                text="{i18n>SensorTypesCreateFail}"
                type="Error"
                showIcon="true"/>
    </Dialog>
</core:FragmentDefinition>


现在我的id是sap ui invisible dialogName--failMsg..

这取决于您在获得id后想要实现什么。如果您只想更改属性,则可以通过模型在没有任何id的情况下进行更改

为此,您可以将模型字段(即baseModel>/visable)指定给visable属性,一旦该属性发生更改,您就可以更改模型,并通过双向绑定更新控件。 更改模型的代码: this.getView().getModel(“nameOfUrModel”).setProperty(“属性”、“值”)

有关这方面的更多信息,请查看上的演练教程

如果你出于任何原因确实需要身份证: 您可以在这里找到命令: sap.ui.core.Fragment.byId(sffragmentId,sId) 它应该能够返回您使用的控件

希望有帮助
Eric

您非常接近解决方案。在创建片段ID时为其添加
dialogName
后,您只需调用API…:

sap.ui.require([“sap/ui/core/Fragment”],Fragment=>Fragment.byId(dialogName,“failMsg”);
。。。以获取前面提到的控件实例

但是,无论您是否提供了片段ID,您都可以随时轻松忽略
“sapui不可见-”
,这意味着您也可以通过
sap.ui.getCore().byId(“failMsg”)
而不是
sap.ui.getCore().byId(“sapui不可见failMsg”)获取控件实例
即使控件是不可见的。

看起来`sap.ui.core.Fragment.byId(sffragmentid,sId)`等于
sffragmentid+“--”+sId
,它对id
sapui隐形failMsg
不起作用,因为它不是
myFragmentId--failMsg
this[dialogName] = sap.ui.xmlfragment("namespace." + dialogName, this);
this.getView().addDependent(this[dialogName]);
this[dialogName] = sap.ui.xmlfragment(dialogName, "namespace." + dialogName, this);
this.getView().addDependent(this[dialogName]);