桌面上的弹出窗口不显示数据

时间:2017-06-07 21:30:09

标签: sapui5

我有这个表组件(sap.m.Table):

<Table
    inset="false"
    items="{
        path: '/SelectExpenseDetails'
    }" >
    <headerToolbar>
        <Toolbar>
            <Button icon="sap-icon://cause" press="onBack" ariaLabelledBy="Atrás" />
            <Button icon="sap-icon://message-information" press="showInfoExpenseItem" ariaLabelledBy="Atrás" />
            <Title text="{i18n>GV.APROB.EXPENSES.detail.title}" level="H2"/>

        </Toolbar>
    </headerToolbar>
    <columns>
        <Column width="7em" >
            <Text text="{i18n>GV.APROB.EXPENSES.detail.concepto.pago}" />
        </Column>

        <Column
            width="4em"
            demandPopin="true"
            hAlign="Center">
            <Text text="{i18n>GV.APROB.EXPENSES.detail.monto}" />
        </Column>

        <Column width="1.5em"
            demandPopin="true"
            hAlign="Center">

        </Column>
    </columns>
    <items>
        <ColumnListItem>

            <ObjectAttribute text="{ExpensesCategory}" />

            <ObjectNumber
                number="{PlanAmount}"
                unit="{masterExpense>/CurrencySymbol}" />

            <Button icon="sap-icon://comment" press="showCommentsExpenseDetailItem" class="sapUiTinyMarginBegin"/>                                          
        </ColumnListItem>
    </items>
</Table>

函数showCommentsExpenseDetailItem显示popover。 Popover组件已打开,但它显示数据:

这是代码:

showCommentsExpenseDetailItem: function(event){
                var popover = sap.ui.xmlfragment("la.incloud.rva.aprobaciones.view.components.popover-comment-item-detail", this);
                this.getView().addDependent(popover);
                popover.openBy(event.getSource());
            }

这是XML片段:

<core:FragmentDefinition
    xmlns="sap.m"
    xmlns:core="sap.ui.core">
    <Popover 
        showHeader="false"
        placement="Bottom">
        <TextArea value="{Comments}" growing="true" growingMaxLines="4" width="100%"/>
    </Popover>
</core:FragmentDefinition>

我认为&#34; {评论}&#34;是调用列表项的属性的正确方法。

似乎我错了......

1 个答案:

答案 0 :(得分:1)

我假设Comments属性属于SelectExpenseDetails实体集的实体。您面临的问题实际上是因为绑定路径不正确。

您已将弹出窗口附加为视图本身的依赖项。这意味着将根据视图的绑定上下文解析其所有相对绑定(如文本区域的值)。如果视图未绑定到任何内容,则不会解析绑定。

要解决此问题,您应该将弹出窗口本身绑定到从按下的项目获取的正确路径。所以你应该调整你的事件处理程序:

showCommentsExpenseDetailItem: function(event){
    var popover = sap.ui.xmlfragment("la.incloud.rva.aprobaciones.view.components.popover-comment-item-detail", this);
    this.getView().addDependent(popover);
    popover.bindElement(event.getSource().getBindingContext().getPath());
    popover.openBy(event.getSource());
}

此外,每次按下按钮时都会创建一个新的弹出窗口,您可能希望重新使用弹出窗口(在视图中以声明方式创建它或将其存储为控制器的属性)。