SAP UI5:无法在xml中绑定控制器变量

问题描述 投票:-1回答:1

单击更改变量的按钮:

<f:content> 
    <Button icon="sap-icon://edit" press="editClick" type="Transparent"></Button>
</f:content>

我需要2向绑定的xml代码:

<VBox class="sapUiSmallMargin">
       <form:SimpleForm id="SimpleFormDisplayColumn_oneGroup">
           <form:content>
               <Label text="{i18n>contextofusage}"/> 
               <Text text="{contextofusagetext}" visible="{!isInfoEditable}"/>
               <Input type="Text" visible="{isInfoEditable}" value="{contextofusagetext}"></Input>
           </form:content>
       </form:SimpleForm>
   </VBox>

控制器:

var isInfoEditable=false;
   return Controller.extend("abc.controller.Detail", {
      editInfoClick: function(event){
            if(isInfoEditable){
               isInfoEditable=false;
            }
            else{
                isInfoEditable=true;
            }

        }
   });
sapui5
1个回答
0
投票

似乎您没有尝试任何操作,但我会尽力引导您:

您不能简单地在控制器中声明变量然后在视图中使用它。 UI5并非如此。而是创建一个模型并将其绑定到您的视图。我还给模型命名,在这种情况下为"view"

onInit: function() {
    var oViewModel = new sap.ui.model.json.JSONModel({
        isInfoEditable: false
    });
    this.getView().setModel(oViewModel, "view");
}

然后在您的视图中使用它。确保在绑定中使用模型名称("view")。如果您想做的不仅仅是简单地使用原始值(例如,将其取反),则必须使用expression binding。另外,您必须使用以/开头的绝对路径:

<form:SimpleForm id="SimpleFormDisplayColumn_oneGroup">
    <form:content>
        <Label text="{i18n>contextofusage}"/> 
        <Text text="{contextofusagetext}" visible="{= !${view>/isInfoEditable} }"/>
        <Input type="Text" visible="{view>/isInfoEditable}" value="{contextofusagetext}"></Input>
    </form:content>
</form:SimpleForm>

单击按钮时,您必须修改/切换模型中的值:

editClick: function (oEvent) {
    var oViewModel = this.getView().getModel("view");
    var bIsEditable = oViewModel.getProperty("/isInfoEditable");
    // negate the current value and set it as the new value
    oViewModel.setProperty("/isInfoEditable", !bIsEditable);
}

我建议强烈阅读UI5的基础知识。您的方法看起来更像Vue.js,但是UI5有其自己的范例。

© www.soinside.com 2019 - 2024. All rights reserved.