来回导航缺少 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>
我正在尝试构建一个具有 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>