来回导航缺少 table 模板

Missing table template on back and forth navigation

我正在尝试构建一个具有 table#1 和可点击项目的应用程序,并在另一个视图中使用 table#2 显示数据,具体取决于您在第一个 [=36] 中单击的项目=].

这是一些奇怪的行为,我会尽力解释这个问题:

该应用程序在您第一次使用时运行良好 - 我单击 table#1 中的一个项目 -> 它导航到带有 table#2 的视图并显示相关数据。一切正常。

现在,如果我导航回 table#1 并单击另一个项目,它会加载 table#2 但没有任何数据。

第三次(以及此后的每一次)我返回并单击 table #1 中的一个项目并且应该加载 table#2 我收到错误消息:

"Error: Missing template or factory function for aggregation items of Element sap.m.Table"

我尝试重新加载项目聚合、销毁导航模板、重新加载模型数据并将 templateSharable 标志设置为 true / false,但没有任何帮助。

我在下面的 table #2

中发布了视图的相关代码

我的XML代码:

<f:SimpleForm id="simpleform" editable="true" layout="ResponsiveGridLayout">
    <f:content>
        <semantic:SemanticPage id="page" headerPinnable="false" toggleHeaderOnTitleClick="false" >
            <semantic:content id="posContent">
                <Table 
                id="rkDetailTable"
                noDataText="{i18n>tableNoDataText}"
                >
                    <columns>
                        <Column>
                            <Text text="Pos ID"/>
                        </Column>
                        <Column>
                            <Text text="{i18n>Art_RkDetail}" />
                        </Column>
                        <Column>
                            <Text text="{i18n>Betrag_RkDetail}"/>
                        </Column>
                    </columns>
                    <items>
                        <ColumnListItem id="rkDetailTableTemplate" type="Navigation" press="onDetail">
                            <cells>
                                <ObjectIdentifier title="{RkposId}" />
                                <Text text="{RksatzId}" />
                                <ObjectNumber number="{RkposBetrag}" unit="EUR" />
                            </cells>
                        </ColumnListItem>
                    </items>
                </Table>
            </semantic:content>
        </semantic:SemanticPage>
    </f:content>
</f:SimpleForm>

对应控制器:

onInit: function () {   
    this.getRouter().getRoute("RkItemDetail").attachMatched(this.onRouteMatched, this);
},
onRouteMatched: function (oEvent) {
    var oArguments = oEvent.getParameter("arguments");
    var RkId = oArguments.RkId;


    var sBindingPathAbrechnung = "/AbrechnungSet(" + RkId + (")");
    this.getView().byId("simpleform").bindElement(sBindingPathAbrechnung); 


    var sBindingPathPosition = "/AbrechnungSet(" + RkId + (")/ToPos");
    this.byId("rkDetailTable").bindItems({
        path: sBindingPathPosition,
        template: this.byId("rkDetailTableTemplate"),
        templateShareable: true
    });
}

忽略元素绑定,它用于该视图中的其他内容。

谢谢!

在您 table 中将 <items> 聚合更改为 <dependents>

<Table 
    id="rkDetailTable"
    noDataText="{i18n>tableNoDataText}"
>
    <columns>
        ...
    </columns>
    <dependents>
        <ColumnListItem id="rkDetailTableTemplate" type="Navigation" press="onDetail">
            ...
        </ColumnListItem>
    </dependents>
</Table>