当前位置: 首页 > news >正文

SAPUI5基础知识9 - JSON Module与数据绑定

1. 背景

在前面的博客中,我们已经学习了SAPUI5中视图和控制器的使用,在本篇博客中,让我们学习下MVC架构中的M-模型了。

SAPUI5中的JSON Model是一个客户端模型,可以用于在SAPUI5应用程序中处理和操作JSON数据。SAPUI5提供了绑定控件数据到JSON对象的机制,使得当JSON数据改变时,UI控件也会自动更新。

2. 示例

使用SAPUI5的JSON Model通常包括以下步骤:

  1. 创建JSON Model实例
  2. 加载或设置JSON数据到模型中
  3. 将模型绑定到视图或控件

以下是一个简单的示例:

// 创建一个JSON Model实例
var oModel = new sap.ui.model.json.JSONModel();// 设置JSON数据到模型中
var oData = {"employees": [{ "firstName": "John", "lastName": "Doe" },{ "firstName": "Anna", "lastName": "Smith" },{ "firstName": "Peter", "lastName": "Jones" }]
};
oModel.setData(oData);// 将模型绑定到视图
this.getView().setModel(oModel);

在视图文件中,使用以下方式绑定数据到控件:

<List items="{/employees}"><items><ObjectListItem title="{firstName}" intro="{lastName}" /></items>
</List>

在上述示例中,我们首先创建了一个JSON Model实例,然后设置了一些JSON数据到模型中。然后,我们将模型绑定到视图。在视图中,我们使用绑定语法将数据绑定到一个列表控件。当JSON数据改变时,列表控件会自动更新。

3. 练习

在上一篇博客练习的基础上,让我们在应用程序中添加一个新的输入字段,并将其值绑定到模型,并将相同的值绑定到输入字段的描述中。当用户输入时,字段的描述将直接自动更新。

3.1 添加JSON Model

首先,让我们在App.controller.js文件中添加JSONModel资源的引用。

通过SAPUI5的生命周期方法onInit函数 ,实例化JSON模型。onInit函数会在控制器创建时被框架调用,类似于控件的构造函数。

模型数据仅包含“recipient”属性,recipliet内部包含一个额外的name名称属性。

为了能够从XML视图中使用这个模型,我们在视图上调用setModel函数并传递我们新创建的模型。

改动后的App.controller.js文件代码如下:

sap.ui.define(["sap/ui/core/mvc/Controller","sap/m/MessageToast","sap/ui/model/json/JSONModel"
], function (Controller, MessageToast, JSONModel) {"use strict";return Controller.extend("zsapui5.test.controller.App", {onInit: function () {//set data model on viewconst oData = {recipient: {name: "World"}};const oModel = new JSONModel(oData);this.getView().setModel(oModel);},onShowHello: function () {MessageToast.show("Hello World");}});
});

3.2 添加输入框

接下来,让我们在视图文件App.view.xml中添加了一个 sap/m/Input 控件,通过这个控件,用户可以输入信息。

通过使用 XML 视图的声明性绑定语法,将控件上的值绑定到 SAPUI5 模型上:

  • 花括号{…}表示数据取自接收者对象的名称属性的值,这就是SAPUI5中的“数据绑定”。

  • /recipient/name 声明了模型中的路径。

<mvc:ViewcontrollerName="zsapui5.test.controller.App"xmlns="sap.m"xmlns:mvc="sap.ui.core.mvc">  <!--在视图中想要使用的库的命名空间列表--><Button text="Say Hello" press = ".onShowHello"/><Input value="{/recipient/name}"description="Hello {/recipient/name}"valueLiveUpdate="true"width="60%"/>
</mvc:View>

3.3 运行

增强后的程序运行效果如下:

初始界面,输入框的值为World,输入框的描述为Hello World;

当用户删除输入框的值时,输入框的描述会自动更新;

当用户在输入框键入Buddy是,输入框的描述更新为Hello Buddy;
在这里插入图片描述

4. 小结

本文介绍了SAPUI5中JSON模型和数据绑定的原理,并通过一个示例展示了其用法。

http://www.lryc.cn/news/382361.html

相关文章:

  • 解决vue3使用ref 获取不到子组件属性问题
  • 使用STL容器还是Qt容器?
  • Android 2ndBLE的实现
  • 常见硬件工程师面试题(二)
  • java构造方法的重载
  • webpack 压缩图片
  • JAVA每日作业day6.24
  • 鸿蒙开发系统基础能力:【@ohos.hiTraceChain (分布式跟踪)】
  • .git目录解读
  • 如何在Java中处理InterruptedException异常?
  • 深入解读Netty中的NIO:原理、架构与实现详解
  • Vim和Nano简介
  • mysql的information_schema浅析
  • 力扣爆刷第153天之TOP100五连刷26-30(接雨水、环形链表、最长上升子序列)
  • 【Linux】—Apache Hive 安装部署
  • 组装盒示范程序
  • 推荐一款AI修图工具,支持AI去水印,AI重绘,AI抠图...
  • 2024广东省职业技能大赛云计算赛项实战——容器化部署Nginx
  • 压缩pdf文件大小在线,在线免费压缩pdf
  • 薄冰英语语法学习--名词1
  • oracle12c到19c adg搭建(六)切换后12c备库服务器安装19c软件在19c主库升级数据字典后尝试同步
  • Scope XY Project的使用
  • Pytorch Geometric(PyG)入门
  • 大模型KV Cache节省神器MLA学习笔记(包含推理时的矩阵吸收分析)
  • 项目中eventbus和rabbitmq配置后,不起作用
  • 文库小程序搭建部署:实现资源共享正向反馈
  • ONLYOFFICE 桌面编辑器8.1---一个高效且强大的办公软件
  • QThread 与QObject::moveToThread利用Qt事件循环在子线程执行多个函数
  • 6-2 归并排序
  • Java NIO(一) 概述