我有一个XML视图,在其中,我有VBox。
<mvc:View xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m"
xmlns:layout="sap.ui.layout" xmlns:core="sap.ui.core" xmlns:form="sap.ui.layout.form">
<VBox id="idIssuesItems">
<Text text="Message1"></Text>
</VBox>
</mvc:View>
此视图用作另一个对象页面中的重用块。我想要的是,当我点击对象页面中的按钮时,我希望VBox中的数据应该刷新。我怎样才能做到这一点?
我试过这样做:
var aView = sap.ui.getCore().byId(sViewId);
var vBoxData = aView.byId("idIssuesItems");
vBoxData.refresh(true);
然而,它似乎运作不佳。 对于表格,我可以使用:
oSmartTable.rebindTable();
但我不确定可以为VBOX做些什么。
任何帮助都将不胜感激。
答案 0 :(得分:0)
您可以使用items
aggregation from FlexBox这是VBox的超类。
<VBox id="idIssuesItems" items="{yourItemModel>/IssueItems}">
<Text text="{yourItemModel>ItemText}"></Text>
</VBox>
您的模型应如下所示:
var itemsModel = new JSONModel({
IssueItems: [{
ItemText: "Item 1 text!"
}, {
ItemText: "Item 2 text!"
}, {
ItemText: "Item 3 text!"
}]
});
this.getView().setModel("yourItemModel", itemsModel);
现在,每当您获得新的IssueItem
时,您都可以将其推送到模型中,之后VBox
会自动添加新的Text
元素:
var yourNewIssue = {
ItemText: "This is a new Issue"
};
var issueModel = this.getView().getModel("yourItemModel");
issueModel.getProperty("/IssueItems").push(yourNewIssue);