我正在使用SAPUI5应用程序中的sap.m.List。共有90个条目,最近3个月中每天有1个条目。看起来像这样:
现在,当单击按钮时,我想滚动到特定的CustomListItem。我的视图看起来像这样:
想法是,我有三个按钮可以直接滚动到一个月。例如:今天,上个月,第三个月。单击按钮直接滚动到该月的第一项。我刚发现某事。像oList.setSelectedItem(oItem, true);
无效。
有人知道如何做到这一点?
谢谢你。
我建议您看一下Plunker的这段代码。我分叉了另一个矮人,并抽动了一下代码。在其中,您可以在滚动容器中找到一个列表,该列表随后通过了解列表项的id属性用于到达所需项。
http://plnkr.co/edit/a5JwfkvAZcHq7NDoYG5s?p=preview
handleSelectChange: function(oEvent) {
var sId = oEvent.getParameter("selectedItem").getBindingContext().getObject().id;
var oList = this.getView().byId("ProductList");
var aListItems = oList.getItems();
var oListItem;
aListItems.forEach(function(element){
var sListObjectId = element.getBindingContext().getObject().id;
if(sId === sListObjectId){
oListItem = element;
}
})
var oScrollContainer = this.getView().byId("oScrollContainer");
jQuery.sap.delayedCall(0, null, function() {
oScrollContainer.scrollToElement(oListItem);
oList.setSelectedItem(oListItem);
});
}
希望有帮助!
您可以检索周围容器的ScrollDelegate(在我看来是FixFlex的情况下),然后使用它滚动到选定的项目。简短示例:
oFixFlex.getScrollDelegate().scrollToElement(oItem.getDomRef());
另一种替代方法是将您的容器包装在Scrollcontainer中,如其他答案中所述。