无法绑定或显示来自ModelData.read的数据以在SapUi5中形成表单

时间:2019-11-21 12:30:21

标签: sapui5

我遇到了麻烦,吓到我了,请检查一下:

这是我用于视图的xml,程序分为两个不同的视图,第一个是带有导航的表,第二个是包含在表单中的详细信息。

<mvc:View xmlns:core="sap.ui.core" xmlns:mvc="sap.ui.core.mvc" xmlns="sap.m" controllerName="Hello_World.Hello_World.controller.View2"
xmlns:html="http://www.w3.org/1999/xhtml" xmlns:form="sap.ui.layout.form">
<App>
    <pages>
        <Page title="Detalles" showHeader="true">
            <Button type="Back" press="patras" tooltip="test"/>
            <VBox>
                </VBox>
                    <form:SimpleForm id="formPruebas" maxContainerCols="2" layout="ResponsiveGridLayout" labelSpanL="5" labelSpanM="4" labelSpanS="6" title="Formulario">
                        <Label text="CustomerID"/>
                            <Text text="{jsonmodel>CustomerID}"/>

                        <Label text="CompanyName"/>
                            <Text text="{CompanyName}"/>
                        <Label text="ContactTitle" />
                            <Text text="{ContactTitle}"/>

                        <Label text="Adress"/>
                            <Text text="{Adress}"/> 

                        <Label text="City"/>
                            <Text text="{City}"/>

                        <Label text="PostalCode"/>
                            <Text text="{PostalCode}"/>

                        <Label text="Country" />
                            <Text text="{i18n>Country}"/>

                        <Button text="Aceptar" type="Accept">
                            <layoutData>
                                <FlexItemData growFactor="1" />
                            </layoutData>
                        </Button>

                        <Button text="Editar" width="100px">
                            <layoutData>
                                <FlexItemData growFactor="1" />
                            </layoutData>
                        </Button>

                    </form:SimpleForm>

        </Page>
    </pages>
</App>

好的,这是我的控制器:

onInit: function() {
            var oRouter = sap.ui.core.UIComponent.getRouterFor(this);
            oRouter.getRoute("View2").attachMatched(this._onRouteMatched, this);
            },

            _onRouteMatched: function(oEvent) {
                var idDevuelto = oEvent.getParameter("arguments").data;
                var idCompleto = "/Customers('" + idDevuelto + "')"; 
                //var oForm = this.getView().byId("formPruebas");
                var oForm = this.getView().byId("formPruebas");
                var serviceUrl = "myurl";
                var oModelData = new sap.ui.model.odata.ODataModel(serviceUrl,{
                    JSON:true,
                    useBatch: false
                });

                oModelData.read(idCompleto, {
                    success: function (oData) {
                        sap.m.MessageToast.show(oData.CustomerID);
                        var oModel = new JSONModel(oData.results);
                        oForm.setModel(oModel.results);

                    },
                    error: function (oError) {
                        sap.m.MessageToast.show("No funca");
                    }
                });



            },

但是,当我运行该程序时,结果没有显示在视图上,有什么想法吗? PD:我对sapui5相当陌生

1 个答案:

答案 0 :(得分:0)

最后,我找到了问题的解决方案,如果您在问题的开头检查XML代码,就会意识到Form元素中没有路径。 在mi的第一个视图中,我有一个带有id和PATH的表,而Form中没有该表,因此我解决它的最快方法是在XML中加上斜杠,例如:

<form:SimpleForm id="formPruebas" maxContainerCols="2" layout="ResponsiveGridLayout" labelSpanL="5" labelSpanM="4" labelSpanS="6" title="Formulario">
                    <Label text="CustomerID"/>
                        <Text text="{/CustomerID}"/> // the slash i mean

有了该修复程序,我只执行oForm.setModel(oModel),因此一切都已连接并可以正常工作 很好,如果更多的人像我一样处理相同的错误,我想共享此信息。 谢谢所有想法。