SAPUI5:如何检索视图中定义的控件的id(例如:Label / toobar)到函数中的控制器?

时间:2017-05-11 08:57:30

标签: sapui5

我需要检索控件的id(VBox有id="multipleChoiceQuestion")并需要在按下按钮时隐藏它。

怎么做?

App.view.xml

<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" xmlns:l="sap.ui.layout" xmlns:f="sap.ui.layout.form" xmlns:core="sap.ui.core"
displayBlock="true" controllerName="opensap.onlinequestionnaire.controller.App" height="100%">
<VBox id="multipleChoiceHolder">
    <HBox width="700px" backgroundDesign="Solid" alignItems="Center" id="mCHorHolder1">
        <CheckBox id="checkBox1"/><Label text="{questionnaire>/data/0/answers/0}" id="multipleChoice1"/>
    </HBox>
</VBox>

App.controller.js

sap.ui.define([
"sap/ui/core/mvc/Controller"
], function(Controller){

    Controller.extend("opensap.onlinequestionnaire.controller.App", {
        goToNext:function() {
            alert("Next Question");
            alert(this.byId('multipleChoiceQuestion'));                         
        }
    });
});

在我的goToNext:function()中,我想检索VBox的ID,并希望隐藏它。

我尝试提醒[{1}},但会返回this.byId()

2 个答案:

答案 0 :(得分:1)

获取VBox:

// id as stated in the description
oVBox = this.getView().byId("multipleChoiceQuestion");

// or
// id as stated in the view in the code sample
oVBox = this.getView().byId("multipleChoiceHolder");

设置可见性:

oVBox.setVisible(false);

顺便说一下,您的帖子描述的ID和帖子代码示例中的视图不相同。但我确定您已经意识到这种轻微的混淆,这与您检索和隐藏控件的一般方法的问题无关。只是想提到它是安全的

答案 1 :(得分:0)

您的VBox的ID是&#34; multipleChoiceHolder&#34;而不是&#34; multipleChoiceQuestion&#34;。所以,不应该 this.byId(&#39; multipleChoiceHolder&#39;)而不是 this.byId(&#39; multipleChoiceQuestion&#39;)