SAPUI5基础知识24 - 如何向manifest.json中添加模型(小结)

1. 背景

在上一篇博客中,我们总结了SAPUI5中模型的各种类型,并通过代码给出了实例化这些模型的方式。

其实,在SAPUI5中,我们可以通过在manifest.json 中添加模型配置,简化模型的初始化过程,并确保模型在应用程序启动时自动加载。

这样,就省去了手动实例化模型的动作,可以简化我们的程序设计逻辑。

2. 示例

2.1 定义数据源

首先,需要在 manifest.json中定义数据源"dataSources"。数据源可以是 OData 服务、JSON 文件等。

json 复制代码
{
  "sap.app": {
    "id": "my.namespace",
    "type": "application",
    "i18n": "i18n/i18n.properties",
    "dataSources": {
      "mainService": {
        "uri": "/path/to/odata/service/",
        "type": "OData",
        "settings": {
          "odataVersion": "2.0"
        }
      },
      "localData": {
        "uri": "model/localData.json",
        "type": "JSON"
      }
    }
  }
}

2.2 关联数据源

接下来,需要在 manifest.json 中的 sap.ui5 节点下,定义模型并关联到数据源。

json 复制代码
{
  "sap.ui5": {
    "models": {
      "": {
        "dataSource": "mainService",
        "settings": {
          "defaultBindingMode": "TwoWay"
        }
      },
      "local": {
        "type": "sap.ui.model.json.JSONModel",
        "uri": "model/localData.json",
        "settings": {
          "defaultBindingMode": "OneWay"
        }
      },
      "i18n": {
        "type": "sap.ui.model.resource.ResourceModel",
        "settings": {
          "bundleName": "my.namespace.i18n.i18n"
        }
      },
      "device": {
        "type": "sap.ui.model.json.JSONModel",
        "settings": {
          "defaultBindingMode": "OneWay",
          "data": {
            "isPhone": "{device>/system/phone}",
            "isTablet": "{device>/system/tablet}"
          }
        }
      }
    }
  }
}

2.3 组件配置

完成上面的步骤后,需要在 Component.js 中,确保调用父类的 init 方法,这样模型会根据 manifest.json 中的配置自动初始化。

js 复制代码
sap.ui.define([
  "sap/ui/core/UIComponent",
  "sap/ui/Device"
], function (UIComponent, Device) {
  "use strict";

  return UIComponent.extend("my.namespace.Component", {
    metadata: {
      manifest: "json"
    },

    init: function () {
      // 调用父类的 init 函数
      UIComponent.prototype.init.apply(this, arguments);

      // 设置设备模型
      var oDeviceModel = new sap.ui.model.json.JSONModel(Device);
      oDeviceModel.setDefaultBindingMode("OneWay");
      this.setModel(oDeviceModel, "device");
    }
  });
});

2.4 数据绑定

通过以上步骤,就完成了模型的自动初始化。这样,在视图中,就可以通过数据绑定来直接使用这些模型了。例如:

xml 复制代码
<mvc:View
  controllerName="my.namespace.controller.Main"
  xmlns:mvc="sap.ui.core.mvc"
  xmlns="sap.m">
  <Page title="{i18n>title}">
    <content>
      <Text text="{/name}" />
      <Text text="{local>/address/street}" />
      <Text text="{device>/isPhone}" />
    </content>
  </Page>
</mvc:View>

4. 小结

本文总结了向manifest.json中添加模型的方式,并给出了具体的代码示例。

相关推荐
爱喝水的鱼丶2 天前
SAP-ABAP:数据类型与数据对象(8篇) 第四篇:关系映射篇——从类型定义到对象实例的转化逻辑
开发语言·数据库·学习·sap·abap
爱喝水的鱼丶3 天前
SAP-ABAP:ABAP函数 NUMBER_GET_NEXT 详解:从编号范围对象获取下一个编号
运维·数据库·学习·sap·abap
爱喝水的鱼丶3 天前
SAP-ABAP:数据类型与数据对象 第二篇:底层逻辑篇——数据类型的分类体系与底层存储原理
运维·开发语言·学习·sap·abap
爱喝水的鱼丶6 天前
SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行
运维·服务器·数据库·学习·sap·abap
爱喝水的鱼丶6 天前
SAP-ABAP:第二篇:实操避坑篇——ABAP Hello World程序创建、语法校验到调试运行全流程指南
运维·服务器·数据库·学习·sap·abap
清风雅雨8 天前
SAP-PP 物料标准成本发布异常不能生产报工CKMLPP改表解决方案
sap
爱喝水的鱼丶10 天前
SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载) 第三篇:ADT常用开发插件与个性化配置教程
数据库·学习·sap·abap
爱喝水的鱼丶10 天前
SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载) 第二篇:ADT客户端完整安装与初始配置教程
运维·开发语言·学习·sap·abap
爱喝水的鱼丶10 天前
SAP-ABAP:ABAP Development Tools(ADT)安装配置学习分享教程(四篇连载)第四篇:ADT连接故障排查与环境迁移教程
运维·开发语言·数据库·学习·sap·abap
爱喝水的鱼丶12 天前
SAP-ABAP:SAP 与 ABAP 关联逻辑与入门路径:业务×开发的协作指南
服务器·前端·数据库·学习·sap·abap