将JSON绑定到表

时间:2016-06-21 15:00:41

标签: javascript json sapui5

编辑:我更新了我的功能! 我想将JSON数据绑定到我的sap.ui.table但我不知道这是如何工作的

所以这是我的表:

<content>
<t:Table id="transactionUiTable" 
                columnHeaderVisible="true" 
                selectionMode="Single" 
                selectionBehavior="RowSelector"
                enableColumnReordering="false" 
                enableGrouping="false" 
                showColumnVisibilityMenu="false" 
                enableSelectAll="false" 
                enableCustomFilter="false"
                enableBusyIndicator="false" 
                rows="{path: '/'}" 
                rowSelectionChange="onTableSelectionChange">
                    <t:toolbar>
                        <Toolbar id="toolbar">
                                <Input width="15%" id="transactionId"  value="txn_18KlBw2eZvKYlo2CdHGDlpAJ"/>
                                <Button text="Search Transaction" type="Emphasized" icon="sap-icon://search" press="onTransactionByTransactionId"/> 
                                <Button text="Transactionlist" type="Unstyled" press="onTransactionList"/>
                                <Button text="Customer Transactionlist" type="Unstyled" press="onCustomerTransactionList"/>
                                <ToolbarSpacer/>
                                <Button icon="sap-icon://action-settings" type="Default" />
                        </Toolbar>
                    </t:toolbar>
                    <t:columns>
                        <t:Column id="id" hAlign="Center" width="10%">
                            <Label id="labelId" text="Transaction Id"></Label>
                            <t:template>
                                <Text text="{orderId}"/>
                            </t:template>
                        </t:Column>
                        <t:Column id="columnDate" hAlign="Center">
                            <Label id="labelDate" text="Date"></Label>
                        </t:Column>
                        <t:Column id="columnAmount" hAlign="Center">
                            <Label id="labelAmount" text="Amount"></Label>
                        </t:Column>
                        <t:Column id="columnCurrency" hAlign="Center">
                            <Label id="labelCurrency" text="Currency"></Label>
                        </t:Column>
                        <t:Column id="columnFee" hAlign="Center">
                            <Label id="labelFee" text="Fee"></Label>
                        </t:Column>
                        <t:Column id="columnNet" hAlign="Center">
                            <Label id="labelNet" text="Net"></Label>
                        </t:Column>
                        <t:Column id="columnType" hAlign="Center">
                            <Label id="labelType" text="Type"></Label>
                        </t:Column>
                            <t:Column id="columnStatus" hAlign="Center">
                            <Label id="labelStatus" text="Status"></Label>
                        </t:Column>
                    </t:columns>
                </t:Table>
            </content>

通过单击带有“搜索事务”文本的按钮,我想通过GET调用带有transactionId的服务,该服务可以写入输入字段,我已经用值“txn_blablabla”填充了它

所以这是我的功能:

onTransactionByTransactionId : function() {
        this.oView = this.getView();
        var query =  this.oView.byId("transactionId").getValue();

        var oJsonModel =  new sap.ui.model.json.JSONModel();
        oJsonModel.loadData("/retrieveTransacion?transactionId=" + query , {}, false);

        var oData = oJsonModel.getProperty("/");
        this.oView.setModel(oData);


    }

所以在我的变量oData上我得到了我的JSON绑定,但是如何在我的表列上绑定那些JSON数据?

例如,我想将JSON数据量与id为“columnAmount”的列绑定....

1 个答案:

答案 0 :(得分:1)

你其实几乎就在那里。您唯一需要做的就是将模型设置为JSONModel而不是原始JSON数据,即:

this.oView.setModel(oData); - &gt; this.oView.setModel(oJsonModel);

您可能还希望将JSONModel的初始化和视图的绑定移至init部分,因为每次按下搜索按钮时都不需要这样做。将它移动到init方法会让你的代码执行得更快,我认为它也会让它更容易理解。

请在此jsbin中找到略微清理和修改的版本(以便它可以连接到公共国家/地区列表服务):http://jsbin.com/laqefak/1/edit?html,output