1. 背景

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

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

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

2. 示例

2.1 定义数据源

首先,需要在 manifest.json中定义数据源"dataSources"。数据源可以是 OData 服务、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 节点下,定义模型并关联到数据源。

{
  "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 中的配置自动初始化。

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 数据绑定

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

<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中添加模型的方式,并给出了具体的代码示例。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部