• HTML5开发移动web应用——SAP UI5篇(7)


    SAPUI5中支持利用Component对组件进行封装。想封装一个组件,Component的基本代码例如以下:

    sap.ui.define([
       "sap/ui/core/UIComponent"], function (UIComponent) {
       "use strict";
       return UIComponent.extend("", {
    
          init : function () {
             // call the init function of the parent
             UIComponent.prototype.init.apply(this, arguments);
    	}
       });
    });

    分析一下Component框架的代码含义,引用了core中的UIComponent基础空间。组件的编写在UIComponent.extend中进行,即进行扩展。

    我们尝试将之前的应用封装成一个组件。新建Component.js文件,代码例如以下:

    sap.ui.define([
       "sap/ui/core/UIComponent",
       "sap/ui/model/json/JSONModel",
       "sap/ui/model/resource/ResourceModel"], function (UIComponent, JSONModel, ResourceModel) {
       "use strict";
       return UIComponent.extend("sap.ui.demo.wt.Component", {
                metadata : {
    		rootView: "sap.ui.demo.wt.view.App"
    	},
        	init : function () {
             UIComponent.prototype.init.apply(this, arguments);
             var oData = {
                recipient : {
                   name : "World"
                }
             };
             var oModel = new JSONModel(oData);
             this.setModel(oModel);
             var i18nModel = new ResourceModel({
                bundleName : "sap.ui.demo.wt.i18n.i18n"
             });
             this.setModel(i18nModel, "i18n");
          }
       });
    });
    我们将原来Controller.js文件里的初始化函数、数据模型绑定配置等工作都放到了Component.js其中。对应的改动Controller.js文件:

    sap.ui.define([
       "sap/ui/core/mvc/Controller",
       "sap/m/MessageToast"], function (Controller, MessageToast) {
       "use strict";
       return Controller.extend("sap.ui.demo.wt.controller.App", {
          onShowHello : function () {
             var oBundle = this.getView().getModel("i18n").getResourceBundle();
             var sRecipient = this.getView().getModel().getProperty("/recipient/name");
             var sMsg = oBundle.getText("helloMsg", [sRecipient]);
             MessageToast.show(sMsg);
          }
       });
    });
    在Controller.js文件里,仅仅保留本项目中须要使用的各个函数。这样使得项目中各个文件的逻辑更清晰了。

    在index.html中。我们能够直接调用Component:

    <script>
             sap.ui.getCore().attachInit(function () {
                new sap.ui.core.ComponentContainer(
                   name : "sap.ui.demo.wt"
                }).placeAt("content");
             });
          </script>
    在SAP Fiori应用中。每一个应用都有一个配置文件即manifest.json。里面定义了一些列的项目配置信息。

    本例的manifest文件例如以下:

    {
      "_version": "1.1.0",
      "sap.app": {
    	"_version": "1.1.0",
    	"id": "sap.ui.demo.wt",//定义命名空间
    	"type": "application",
    	"i18n": "i18n/i18n.properties",
    	"title": "{{appTitle}}",
    	"description": "{{appDescription}}",
    	"applicationVersion": {
    	  "version": "1.0.0"
    	},
    	"ach": "CA-UI5-DOC"
      },
      "sap.ui": {
    	"_version": "1.1.0",
    	"technology": "UI5",
    	"deviceTypes": {
    	  "desktop": true,
    	  "tablet": true,
    	  "phone": true
    	},
    	"supportedThemes": [
    	  "sap_bluecrystal"
    	]
      },
      "sap.ui5": {
    	"_version": "1.1.0",
    	"rootView": "sap.ui.demo.wt.view.App",
    	"dependencies": {
    	  "minUI5Version": "1.30",
    	  "libs": {
    		"sap.m": {}
    	  }
    	},
    	"models": {
    	  "i18n": {
    		"type": "sap.ui.model.resource.ResourceModel",
    		"settings": {
    		  "bundleName": "sap.ui.demo.wt.i18n.i18n"
    		}
    	  }
    	}
      }}

    能够看到,manifest.json文件定义了包含ui5版本号、数据模型等一系列基本信息。

    在以后的开发过程中该配置文件会被不断完好。

  • 相关阅读:
    第十一周项目6-回文&素数(一)
    第十一周项目1-函数版星号图(三) .
    囚徒困境 For BBasic
    第十一周项目5-当年第几天
    第十一周项目4-特殊三位数
    第十一周项目3-程序的多文件组织
    第十一周项目2-求最大公约数
    第十一周项目1-函数版星号图(二)
    第十一周项目1-函数版星号图(一)
    第十周-囚徒困境
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7100227.html
Copyright © 2020-2023  润新知