UI5组件概念问题

时间:2014-08-05 23:46:59

标签: components sapui5

我尝试使用UI5的组件概念,并且刚刚构建了以下内容:

Index.html代码段

<script src="resources/sap-ui-core.js"
                id="sap-ui-bootstrap"
                data-sap-ui-libs="sap.m"
                data-sap-ui-theme="sap_bluecrystal"
                data-sap-ui-resourceroots='{
                "sap.ui.ui5test.myapp": "./"
            }'>
        </script>
        <!-- only load the mobile lib "sap.m" and the "sap_bluecrystal" theme -->

        <script>
        new sap.m.Shell({
            app : new sap.ui.core.ComponentContainer({
                name : "sap.ui.ui5test.myapp"
            })
        }).placeAt("content");

        </script>

Component.js片段:

jQuery.sap.declare("sap.ui.ui5test.myapp.Component");

sap.ui.core.UIComponent.extend("sap.ui.ui5test.myapp.Component", {

        createContent : function() {
            var oView = new sap.ui.core.mvc.View({
                id : "testview",
                name : "sap.ui.ui5test.myapp.views.FirstView",
                type : "JS",
                viewData : {component : this}
            });

            var jsonModel = new sap.ui.model.json.JSONModel();
            jsonModel.loadData('http://api.openweathermap.org/data/2.5/weather?q=Auckland');
            //jsonModel.loadData('http://api.openweathermap.org/data/2.5/group?id=524901,703448,2643743&units=metric');
            sap.ui.getCore().setModel(jsonModel);

            oView.setModel(jsonModel);


        }

});

在上面的component.js片段中,如果我将视图返回为返回oView;它给了我一个错误说&#34; Uncaught TypeError:undefined不是函数&#34;。一旦我删除return语句就会消失。

如果我不返回视图,它会导航到我在上面实例化和加载的视图吗?正如我在chrome开发人员工具中看到的那样,我似乎没有找到FirstView打开它的js文件,因为我认为它没有被加载。

请建议如何纠正此问题以及如何进一步导航。

急切地等待你的快速反应。

干杯, AW

1 个答案:

答案 0 :(得分:1)

  1. 我检查了你的FirstView.js。请在退货声明中执行以下操作:

    return this.app;

    由于没有名为app的本地变量,如果您编写返回应用,则应用未定义。

  2. 请在createContent方法中使用sap.ui.view:

         var oView = new sap.ui.view({
            id : "testview",
            viewName : "sap.ui.ui5test.myapp.views.FirstView",
            type : "JS",
            viewData : {component : this}
        });