zoukankan      html  css  js  c++  java
  • 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版本号、数据模型等一系列基本信息。

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

  • 相关阅读:
    源码学习之Yii-去掉magic_quote里的反斜线
    PHP中传递回调函数的方法
    mac里的terminal环境下如何跳转行首和行末
    mac下切换输入法
    nginx上配置vhosts
    MySQL学习之查询优化(一)
    MySQL学习之索引(三)
    在LINUX下为自己加上sudo权限的方法
    MySQL学习之索引(二)
    MySQL学习之索引(一)
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7100227.html
Copyright © 2011-2022 走看看