如何在sapui5 xml视图中将数据绑定到网格布局

时间:2017-01-05 14:12:55

标签: json xml data-binding sap sapui5

我在Grid下有一个StandardListItem元素列表,并希望使用json模型将它们绑定到json文件。 这就是我在控制器中进行绑定的方法。我相信这部分是正确的,因为我正以这种方式为桌子做这件事。

var pricingModel = new JSONModel("./model/evaluation.json");

//set model(s) to current xml view
this.getView().setModel(pricingModel, "pricingModel");

这是我的xml视图的一部分,我正在尝试绑定我的数据

<l:Grid class="sapUiSmallMarginTop"
    id="priceEvalGridContainer" visible="false"
    binding="{/PriceEstimate}">
<l:content>
<l:VerticalLayout id="priceEvalCol1" width="100%">
    <StandardListItem  title="NSN"
                       info="{NSNID}"/>
    <StandardListItem  title="DLA Price Estimate (DLA)"
                       info="{DLAPriceEstimate}"/>
    <StandardListItem  title="Proposed Price"
                       info="$20.00" />
</l:VerticalLayout>
<l:VerticalLayout id="priceEvalCol2" width="100%">
    <StandardListItem  title="$ Difference From DLA" info="$1.50" />
    <StandardListItem  title="Total Price Difference" info="$135.00" />
    <StandardListItem  title="PPI Price Adjusted For Inflation"    info="$18.59" />
</l:VerticalLayout>
</l:content>
</l:Grid>

我已经对很多值进行了硬编码,因为我无法正确连接数据。现在测试的唯一项目是info =“{NSNID}”和info =“{DLAPriceEstimate}”

我已经看到了如何将List或Grid中的StandardListItem与其他类型的对象绑定的示例,但还没有看到它是一起完成的。

我尝试以下列方式进行绑定,但它对我不起作用。

<l:Grid class="sapUiSmallMarginTop"
    id="priceEvalGridContainer" visible="false"
    binding="{
             path: '/PriceEstimate'
              }">

应用程序运行没有问题,并且没有显示错误,但数据未显示在网格中。它只是空白。

1 个答案:

答案 0 :(得分:1)

this.getView().setModel(pricingModel, "pricingModel");

由于您使用的是命名模型,请使用:

 binding="{pricingModel>/PriceEstimate}"

如果此数据JSON是一个数组,您可能必须在内容中给出索引,如:

info="{pricingModel>0/NSNID}"

其他:info="{pricingModel>NSNID}"会这样做。 (同样适用于其他人) 无论哪种方式,它取决于数据。请添加 pricingModel 的外观。