如何在VBox中刷新数据

时间:2018-02-14 15:41:02

标签: javascript sapui5

我有一个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做些什么。

任何帮助都将不胜感激。

1 个答案:

答案 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);