专家们,
我需要在扩展的 Fiori 应用程序中将动态 ID 声明到 XML 视图中。我需要这个,因为我需要根据 Item 值设置图像 src。
有没有办法做这样的事情?
<Image id="myImage{MyModelProperty}" />
问候, 安德烈
计算字段将满足您的要求。
1.在引导配置中设置标志data-sap-ui-xx-bindingSyntax="complex"
。详情在这里
2.在你的控制器js中定义一个格式化函数。
imageFormatter : function(value) {
var imageSrc = "myImage" + value;
return imageSrc;
}
3.在XML视图中声明Image如下
<Image src="{path:'MyModelProperty',formatter:'.imageFormatter'}"/>
希望它能解决你的问题。
据我所知,不能从模型属性中构建 ID。为什么要构建图像的 ID 而不是它的src
属性?如果你想确保图像ID的唯一性,那么就让框架来处理它。
如果将src
属性与模型绑定一起使用,则底层模型属性的更改将立即在 UI 上生效。只需setProperty("MyModelProperty", "new_image_postfix")
在您的模型实例上调用。
带有按钮的简短示例及其文本绑定:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta http-equiv='Content-Type' content='text/html;charset=UTF-8'/>
<script src="https://sapui5.hana.ondemand.com/resources/sap-ui-core.js"
data-sap-ui-libs="sap.ui.commons"
data-sap-ui-theme="sap_goldreflection">
</script>
<script type="text/javascript">
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData({txt: "Sample"});
sap.ui.getCore().setModel(oModel);
var oButton = new sap.ui.commons.Button({id:"testBtn", text:"{/txt}", press:function(oEvent) { oModel.setProperty("/txt", "SampleUpdated") } });
oButton.placeAt("content");
</script>
</head>
<body class="sapUiBody" role="application">
<div id="content"></div>
</body>
</html>