Sapui5 MessagePopover片段中的动态链接未显示
我一直在开发一个UI5应用程序,它使用一个模型来存储通知。我想在可以使用页脚触发的MessagePopover中显示这些通知 数据绑定工作得非常好。我可以看到所有属性都已设置并与模型内的数据相匹配。但是详细信息页面中的链接没有显示出来 当我使用未使用数据绑定的静态链接(即指向google.com的静态链接)时,会呈现该链接 你们中有谁遇到过同样的问题并有解决办法吗 这是我的密码:Sapui5 MessagePopover片段中的动态链接未显示,sapui5,Sapui5,我一直在开发一个UI5应用程序,它使用一个模型来存储通知。我想在可以使用页脚触发的MessagePopover中显示这些通知 数据绑定工作得非常好。我可以看到所有属性都已设置并与模型内的数据相匹配。但是详细信息页面中的链接没有显示出来 当我使用未使用数据绑定的静态链接(即指向google.com的静态链接)时,会呈现该链接 你们中有谁遇到过同样的问题并有解决办法吗 这是我的密码: sap.ui.define([ “sap/ui/core/mvc/Controller” ],功能(基本控制器){
sap.ui.define([
“sap/ui/core/mvc/Controller”
],功能(基本控制器){
返回BaseController.extend(“test.test”{
onShowNotificationPopover:函数(oEvent){
如果(!this._notificationPopover){
var oMessageTemplate=new sap.m.MessageItem({
类型:“{data>type}”,
标题:“{data>title}”,
副标题:{数据>副标题},
描述:“{data>description}”,
markupDescription:“{data>markupDescription}”,
组名:“{data>groupName}”
});
var oLink=新的sap.m.Link({
文本:“{data>link/text}”,
href:“{data>link/url}”,
目标:“_blank”
});
/*使用静态*/
//oLink=new sap.m.Link({文本:“谷歌”,href:“http://google.com,目标:“\u blank”})
OmessaGetTemplate.setLink(oLink);
var oPopover=new sap.m.messagepoover();
oPopover.bindAggregation(“项目”{
模板:OmessaGetTemplate,
路径:“数据>/notifications”
});
这。_notificationPopover=opopopover;
this.getView().addDependent(this.\u notificationPopover);
}
这是._notificationPopover.toggle(oEvent.getSource());
}
});
});
该视图包含以下内容:
还有index.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://openui5.hana.ondemand.com/resources/sap-ui-core.js"
id="sap-ui-bootstrap"
data-sap-ui-libs="sap.m, sap.f"
data-sap-ui-theme="sap_belize"
data-sap-ui-bindingSyntax="complex"
data-sap-ui-resourceroots='{
"test": "."
}'
>
</script>
<script>
sap.ui.getCore().attachInit(function() {
var oModel = new sap.ui.model.json.JSONModel();
oModel.setData({
notifications: [{
type: "Error",
title: "Title1",
subtitle: "Subtitle",
description: "This is a description and below you should see a link",
markupDescription: false,
groupName: "notification",
link: {
text: "Click here",
url: "http://www.google.com"
}
}]
});
var oView = sap.ui.xmlview("test.Test");
oView.setModel(oModel, "data");
oView.placeAt("content");
});
</script>
</head>
<body class="sapUiBody" role="application">
<div id="content"></div>
</body>
</html>
sap.ui.getCore().attachInit(函数()){
var oModel=new sap.ui.model.json.JSONModel();
oModel.setData({
通知:[{
键入:“错误”,
标题:“标题1”,
副标题:“副标题”,
描述:“这是一个描述,下面你应该看到一个链接”,
markupDescription:false,
组名:“通知”,
链接:{
文字:“点击这里”,
url:“http://www.google.com"
}
}]
});
var oView=sap.ui.xmlview(“test.test”);
oView.setModel(oModel,“数据”);
oView.placeAt(“内容”);
});
我找到了解决问题的方法:MessagePopover事件 控制器内的事件处理程序:
onNotificationItemSelect: function(oEvent){
var oItem = oEvent.getParameter("item"), oBindingContext = oItem.getBindingContext("data");
var oData = oBindingContext.getModel().getProperty(oBindingContext.getPath());
oItem.getLink().setText(oData.link.text);
oItem.getLink().setHref(oData.link.url);
}
您必须注册它:
var oPopover = new sap.m.MessagePopover({
itemSelect: this.onNotificationItemSelect
});
其他信息 当您使用显示popover的内容时
console.log(oPopover.getItems()[0].getLink())
将显示正确的属性
但是当您搜索DOM时,您可以看到链接被复制,并且不包含所需的绑定