在单个视图中组合不同的OData路径以进行绑定

时间:2016-09-30 10:02:05

标签: sapui5 sap-fiori

最好用一个例子来解释我的问题: 观点:

<navContainer>
<page id="first">
<label text="{name}"/>
</page>
<page id="second">
<label text="{car}"/>
</page>
</navContainer>

该模型是OData服务。对于第一个&#39;页面我想使用实体&#39; / EmployeeSet(0)&#39;对于第二个&#39;页面我想使用实体&#39; / CarSet(0)&#39;。

到目前为止,我想出了这种技术,但它并不适合我:

this.byId("first").bindElement("/EmployeeSet(0)");
this.byId("second").bindElement("/CarSet(0)");

为每个页面设置绑定的正确方法是什么? 这仍然适用于单个模型,因此我不需要在视图中引用命名模型,例如&#39; text =&#34; {secondModel&gt; car}&#34;&#39;?

更新: WebIDE中的自动完成列表未显示&#34;绑定&#34;,但这就是我需要的内容。它有效。

enter image description here

1 个答案:

答案 0 :(得分:0)

您的代码看起来不错,我猜其他地方还有问题。您是否还检查服务器是否返回数据?您希望从上面列出的视图中看到什么?

无论如何,这是我刚刚为你勾画的little jsbin example(见下文)。 binsElement()实际上与视图中的binding =“”相同。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>SAPUI5 single file template | nabisoft</title>
        <script src="https://openui5.hana.ondemand.com/resources/sap-ui-core.js"
            id="sap-ui-bootstrap"
            data-sap-ui-theme="sap_bluecrystal"
            data-sap-ui-libs="sap.m"
            data-sap-ui-bindingSyntax="complex"
            data-sap-ui-compatVersion="edge"
            data-sap-ui-preload="async"></script>
            <!-- use "sync" or change the code below if you have issues -->

        <!-- XMLView -->
        <script id="myXmlView" type="ui5/xmlview">
            <mvc:View
                controllerName="MyController"
                xmlns="sap.m"
                xmlns:core="sap.ui.core"
                xmlns:mvc="sap.ui.core.mvc">

                <Panel id="panel1" binding="{/Customers('ALFKI')}">
                  <Text text="{CompanyName}"/>
                </Panel>

                <Panel id="panel2" binding="{/Customers('ANATR')}">
                  <Text text="{CompanyName}"/>
                </Panel>                

            </mvc:View>
        </script>

        <script>
            sap.ui.getCore().attachInit(function () {
                "use strict";

                //### Controller ###
                sap.ui.define([
                    "sap/ui/core/mvc/Controller",
                    "sap/ui/model/odata/v2/ODataModel"
                ], function (Controller, ODataModel) {
                    "use strict";

                    return Controller.extend("MyController", {
                        onInit : function () {
                            this.getView().setModel(
                                new ODataModel("https://cors-anywhere.herokuapp.com/services.odata.org/V2/Northwind/Northwind.svc/", {
                                    json : true,
                                    useBatch : false
                                })
                            );
                        }
                    });
                });

                //### THE APP: place the XMLView somewhere into DOM ###
                sap.ui.xmlview({
                    viewContent : jQuery("#myXmlView").html()
                }).placeAt("content");

            });
        </script>

    </head>

    <body class="sapUiBody">
        <div id="content"></div>
    </body>
</html>

这是另一个jsbin example using NavContainer & Pages(基于Explored App中的NavContainer示例)。 这是jsbin example is the same but uses bindElement()