SapUI5:列表项带有另一个列表项的切换(隐藏/显示)
SapUI5: List item with a toggle (hide/show) for another List Item
Hey UI5是一个有很多可能性的框架,但有时我会把想法(在普通HTML中可能更容易)压在墙上。这就是我想要的:一个列表项列表,显示柏林、洛杉矶、莫斯科等城市。在这个列表中,你可以点击一个图标(首选,但也可以是一个按钮)。如果单击图标,则会显示另一个ListItem,从而显示地址。如果你点击该ListItem,你就会得到一个地图——地图部分正在工作,如果它有一个StandardListItem,它就会与列表一起工作。问题是什么?这不利于展示我想要的东西!
示例:
- 柏林->点击->展示->123456示例街
- Moskau
- 洛杉矶
或:
- 柏林
- Moskau
- 洛杉矶->点击->显示->654321示例地址
我的代码:
注意:我删除了一些代码,所以你只能得到它的必要部分
视图:
<List id="campusList"
items="{
path: '/',
sorter: {
path: 'city',
descending: false
}
}"
mode="SingleSelectMaster"
itemPress="handleListItemPress"
growing="true">
<InputListItem label="{city}" >
<core:Icon src="sap-icon://navigation-down-arrow" press="showDetails" />
<StandardListItem type="Navigation" title="{buildingName}" description="{buildingDesc}" />
</InputListItem>
</List>
控制器:
jQuery.sap.require("www.adress.com.GeneralHelper");
sap.ui.controller("www.adress.com.LocationList", {
onInit: function() {
var bus = sap.ui.getCore().getEventBus();
bus.subscribe("content", "updateSuccess", this.updateSuccess, this);
sap.ui.getCore().getEventBus().publish("content", "update", {
id : "Location"
});
},
updateSuccess: function (channelID , eventID, data) {
if (data.id === "Location") {
var oModel = sap.ui.getCore().getModel("LocationModel");
oModel.setDefaultBindingMode(sap.ui.model.BindingMode.OneWay);
this.getView().setModel(oModel);
if (!jQuery.device.is.phone) {
//preselect entry
var self = this;
var oList = this.byId("campusList");
oList.attachUpdateFinished(function(evt) {
if (oList.getItems().length > 0) {
var oContext = new sap.ui.model.Context(self.getView().getModel(), "/0");
oList.setSelectedItem(oList.getItems()[0], true);
sap.ui.getCore().getEventBus().publish("nav", "to", {
id: "LocationDetail",
data : oContext
});
}
});
}
}
},
handleListItemPress : function (evt) {
sap.ui.getCore().getEventBus().publish("nav", "to", {
id : "LocationDetail",
data : evt.getParameters().listItem.getBindingContext()
});
}
});
我还有一个从UpdateHelper加载的本地演示数据json。
附言:我不想使用$().hide、$().show和其他jquery,我更喜欢UI5。
如果您想显示或隐藏列表项,可以使用
myListItem.setVisible(true) //or
myListItem.setVisible(false)
但您也可以使用自定义列表项,将所有额外信息放入new sap.m.Panel()
中,并在单击时将该Panel添加到您的自定义列表项中(并将其销毁/设置为不可见以隐藏额外信息)。
相关文章:
- 如何使用javascript将值引导下拉列表设置为隐藏值asp.net
- 当链接单击-jQuery时,第二层下拉列表将隐藏
- 修复列表的绝对位置(li's隐藏在前两个后面)
- 如何使用jQuery隐藏与选择选项相关的选择选项列表
- 使用2个下拉列表显示/隐藏分区
- 选中复选框时如何显示/隐藏下拉列表
- 如何在 *ngFor 列表中显示单击的元素,使用 Angular 2 隐藏其他元素
- 从未隐藏的列表项中获取项
- HTML 表单字段根据从下拉列表中选择的选项显示/隐藏
- 根据下拉列表中选择的项目隐藏所有元素
- 隐藏并显示列表中的元素
- 删除或隐藏下拉列表中的一些值,该列表由使用JavaScript的存储过程填充
- 如何使用jQuery显示()和隐藏()列表项块
- 如何从另一个下拉列表中隐藏选择基于下拉列表的值
- 如何部分隐藏asp.net复选框列表项
- 以父对象为中心并带有溢出的下拉列表:隐藏
- 引导程序选择下拉列表被另一个下拉列表隐藏
- 动态列表隐藏空元素
- 如何根据另一个下拉列表隐藏和显示下拉列表值
- 如何使嵌套列表隐藏类似于jquery移动.示例包括在内