单击更改变量的按钮:
<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;
}
}
});
似乎您没有尝试任何操作,但我会尽力引导您:
您不能简单地在控制器中声明变量然后在视图中使用它。 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有其自己的范例。