Sapui5 绑定到主详细信息应用程序中的元素时发生OData错误

Sapui5 绑定到主详细信息应用程序中的元素时发生OData错误,sapui5,Sapui5,我已经开发了一个主细节应用程序。在详细视图中,我使用的是DynamicPage,其中在内容中,我使用的是一个包含3项的IconTabBar元素。每个项目都是带有Smartform的不同片段 主视图正在从EntitySet(MasterEntity)加载数据 带有的详细视图正在使用实体主实体中的某些字段 片段1:正在使用DetailEntitySet 片段2:正在使用DetailEntitySet 片段3:正在使用DetailEntitySet 基本上,当细节视图控制器检测到RouteMatch时

我已经开发了一个主细节应用程序。在详细视图中,我使用的是DynamicPage,其中在内容中,我使用的是一个包含3项的IconTabBar元素。每个项目都是带有Smartform的不同片段

主视图正在从EntitySet(MasterEntity)加载数据

带有的详细视图正在使用实体主实体中的某些字段

片段1:正在使用DetailEntitySet

片段2:正在使用DetailEntitySet

片段3:正在使用DetailEntitySet

基本上,当细节视图控制器检测到RouteMatch时,我在主视图上接收所选行,并将其绑定到视图细节。完成后,我将检查视图是否已生成,然后调用一个方法将扩展的实体绑定到包含3个片段的iconTabBar元素。代码如下:

function _onRoutePatternMatched(event) {
    if (event.getParameter("name") === "detail") {
        var path = event.getParameter("arguments").contextPath;
        if (path !== " ") {
            var path2 = "/" + path;
            view.bindElement(path2);
            if (view) {
                this._setBindingToIconTab("Master2Detail");
            }
        } else {
            view.unbindElement();
        }
    }
}
_setBindingToIconTab: function (sAssociation) {
    view.byId("iconTabBar").bindElement(sAssociation);
}
_setbindingtocontab函数如下所示:

function _onRoutePatternMatched(event) {
    if (event.getParameter("name") === "detail") {
        var path = event.getParameter("arguments").contextPath;
        if (path !== " ") {
            var path2 = "/" + path;
            view.bindElement(path2);
            if (view) {
                this._setBindingToIconTab("Master2Detail");
            }
        } else {
            view.unbindElement();
        }
    }
}
_setBindingToIconTab: function (sAssociation) {
    view.byId("iconTabBar").bindElement(sAssociation);
}
IContabar是我在局部视图中分配给IContabar元素的ID

问题是,当我执行它并加载第一个片段时,一切都正常。第二次和第三次出现错误(但显示的值…)。在屏幕上拾取碎片时,我正在加载碎片。如果没有生成它们,我将实例化它们并将它们存储在一个数组中。我得到的错误是:

断言失败:在“ZZODATA_TEST_SRV.Master”实体类型中找不到EDM属性“DateFrom”- sap.ui.comp.smartfield.ODataControlFactory

它抱怨DetailEntitySet中的字段不在MasterEntitySet中


您能帮我一下吗?

因为没有XML、运行示例等。我无法告诉您为什么会发生此错误,但是

最佳做法是在详图视图中也使用“展开到详图”等方式绑定选定图元

MasterEntitySet->DetailEntitySet
由于绑定被传播到子级,因此无需再次绑定iconTabBar。数据已经存在。我也不知道你的情况,但大多数服务都是这样的

MasterEntitySet->DetailEntitySet->DataVariantA(ForIconTab1)
                                ->DataVariantB(ForIconTab2)
                                ->DataVariantC(ForIconTab3)
oView.bindObject({
                path: "/MasterEntity(" + this._args.ID + ")",
                parameters: {
                      $expand:`DetailEntityNavPath($expand=DataVariantANavPath()...`
                },
                events: {
                    dataReceived: (oEvent) => {...
在V4中,您的详细代码如下所示

MasterEntitySet->DetailEntitySet->DataVariantA(ForIconTab1)
                                ->DataVariantB(ForIconTab2)
                                ->DataVariantC(ForIconTab3)
oView.bindObject({
                path: "/MasterEntity(" + this._args.ID + ")",
                parameters: {
                      $expand:`DetailEntityNavPath($expand=DataVariantANavPath()...`
                },
                events: {
                    dataReceived: (oEvent) => {...