[UI5] ODATA V4中的CRUD

news2024/12/22 23:29:55

文章目录

  • 前言
  • 一、Read
  • 二、Create
  • 三、Update
  • 四、Delete


前言

ODATA V4在CRUD方面与V2截然不同。
这篇文章简单介绍V4中是如何进行CRUD操作


一、Read

Model不再有read方法, 一般是把Path绑定到View中进行读取, 如果需要额外的读取数据,可使用如下方法

需要在Context中调用requestObject方法才能实现数据的读取
oModel.bindContext方法需要绑定对应的Entity或者路径

  • 代码:
var oModel = this.getView().getModel()
var oContext = oModel.bindContext("/Mara")
oContext.requestObject().then(function (oData) {
    // 处理成功的回调
    console.log("Data read successfully:", oData);
}).catch(function (oError) {
    // 处理失败的回调
    console.error("Error reading data:", oError);
});

  • 结果:
    在这里插入图片描述

二、Create

Model不再有create方法

创建和Read不一样,需要调用bindList方法创建Binding,然后使用Binding.create方法创建。

// 创建需要的数据
var json = {
   "Matnr": 'GOOD',
   "Maktx": 'JOB',
   "Meins": '',
}


var oModel = this.getView().getModel();
var oBinding = oModel.bindList("/Mara")
//创建action
var oContext = oBinding.create(json)
//创建回调
oContext.created().then(
   function (res) {
       oModel.refresh()

   },
   function (res) {
       alert(res)
   }
)

如果已经绑定了一个Table,则可以直接拿到Bidning
通过Table Binding创建时不需要刷新也会自动更新数据。

var json = {
    "Matnr": 'GOOD',
    "Maktx": 'JOB',
    "Meins": '',
}

var oTable = this.byId("itemTable");
var oBinding = oTable.getBinding("items"); //get binding

// var oModel = this.getView().getModel();
// var oBinding = oModel.bindList("/Mara")

var oContext = oBinding.create(json)
oContext.created().then(
    function (res) {
        // oModel.refresh()  不需要refresh
    },
    function (res) {
        alert(res)
    }
)

三、Update

Model不再有update方法,通过setProperty方法设置字段属性,即可自动发送PUT请求并修改后端数据

  • 如果是绑定在Table
 var oTable = this.byId("itemTable")
 var selectedItems = oTable.getSelectedItems()

 selectedItems.forEach(item => {
     var oContext = item.getBindingContext()
     oContext.setProperty("Maktx", '测试'); // 方法结束时,自动执行batch,如果是多个字段,则只会提交一次
 });
  • 或者额外绑定Context,然后再进行字段属性变更
 const contextBinding = oModel.bindContext("/Mara('ZZZ')");
 const targetContext = contextBinding.getBoundContext();
 targetContext.setProperty("Maktx", '测试');
  • 当然,也可以绑定到一个组件之后,再进行属性变更
 this.byId("saveBox").bindElement("/Mara('ZZZ')")
 var oContext3 = this.byId("saveBox").getBindingContext()
 oContext3.setProperty("Maktx", '测试');

四、Delete

删除可以通过context进行,也可以通过model进行, 删除操作不需要调用refresh方法,删除后会自动刷新

  • 在Table中删除所选行
onDeleteButtonPress: function () {
    var that = this
    var oTable = this.byId("itemTable")
    var selectedItems = oTable.getSelectedItems()

    selectedItems.forEach(item => {
        var oContext = item.getBindingContext()
        oContext.delete().then(
            function (res) {
                // oModel.refresh()
                alert("ok")
            },
            function (res) {
                alert("error")
            })
    });
},
  • 使用Model进行删除
var oModel = this.getView().getModel()
oModel.delete("/Mara('ZZZ')").then(
    function (res) {
        // oModel.refresh()
        // alert("ok")
    },
    function (res) {
        // alert("error")
    })

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1376026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树状结构查询 - 华为OD统一考试

OD统一考试 分值: 200分 题解: Java / Python / C 题目描述 通常使用多行的节点、父节点表示一棵树,比如: 西安 陕西 陕西 中国 江西 中国 中国 亚洲 泰国 亚洲 输入一个节点之后,请打印出来树中他的所有下层节点。 …

Python: Spire.PDF-for-Python

# encoding: utf-8 # 版权所有 2024 ©涂聚文有限公司 # 许可信息查看: # 描述: # Author : geovindu,Geovin Du 涂聚文. # IDE : PyCharm 2023.1 python 3.11 # Datetime : 2024/1/11 10:32 # User : geovindu # Product : PyChar…

TypeScript类型挑战:实现内置的Omit实用类型

掌握 TypeScript Omit 泛型,一起完成 Type 挑战,巩固 TypeScript 知识。 为了帮助读者更好地巩固 TypeScript 的知识,我从 Github 上的 type-challenges 库中选择了几十个挑战,与您一起完成类型挑战。 挑战 实现内置的 Omit&…

分布式系统架构设计之分布式消息队列的水平扩展性、安全可用性以及监控与调优

一、分布式消息队列的水平扩展 随着业务的快速发展和数据的不断增长,单一的消息队列服务器往往难以满足高并发、高可用和高吞吐量的需求,因此,如何实现消息队列的水平扩展成为了一个重要的问题。这部分我将从分区、副本、负载均衡等关键概念…

影响eCPM的因素有哪些?如何提升eCPM?

eCPM(千次展示有效收益)直接关系广告变现收益的高低,是开发者们最关心的数据之一。要想优化提升eCPM,首先要了解哪些主要因素影响eCPM,再针对性优化广告库存,提高变现收益。 https://www.shenshiads.com …

线性回归实例

1、线性回归(linear Regression)和逻辑回归(logistic Regression)的区别 线性回归主要是用来拟合数据,逻辑回归主要是用来区分数据,找到决策边界。 线性回归的代价函数常用平方误差函数,逻辑回…

java每日一题——打印100以内个位和十位相同,尾数为1,3,5,7的数字

前言: 打好基础,daydayup! 题目:打印100以内个位和十位相同,尾数为1,3,5,7的数字 思路:1,个位通过对10求余数可求出1,3,5,7; 2,十位可通过先除10…

【Unity】【Pico】【VR开发】为何PICO打包后真机运行闪退

【背景】 设置步骤,项目配置都没问题,Build也成功,Unity版本是符合要求的2022LTS版本,但是一在真机上运行就闪退。 【分析】 由于并没有开版权验证,而且闪退后也并没有弹框说版权问题,所以还是怀疑环境有…

软件测试|Python成员运算符:使用方法与元素检查

简介 Python是一种功能强大的编程语言,提供了许多方便的工具来处理数据和集合。其中之一就是成员运算符,它允许我们在集合中检查特定元素的存在。在本文中,我们将深入探讨Python中的成员运算符,以及如何使用它来进行元素检查。 …

pyside6 捕捉主窗口关闭后,进行释放相关的资源

import sys from PySide6 import QtGui from PySide6.QtWidgets import QWidget,QApplication,QMessageBoxclass Message(QWidget):def __init__(self):# 如果希望窗口内嵌于其他部件,可添加parent参数super(Message, self).__init__()# 调用初始化方法self.initUI(…

使用Sqoop将数据导入Hadoop的详细教程

在大数据处理中,Sqoop是一个强大的工具,它可以将关系型数据库中的数据导入到Hadoop生态系统中,以便进行进一步的分析和处理。本文将提供一个详细的教程,以帮助大家了解如何使用Sqoop将数据导入Hadoop。 准备工作 在开始之前&…

【uniapp】新课uniapp零基础入门到项目打包(微信小程序/H5/vue/安卓apk)全掌握

一、uniapp和HBuilderX介绍 uni-app官方网站:https://uniapp.dcloud.net.cn/ 为什么要学习uniapp? 1、一套代码可以打包到不同的应用平台;一套代码编到十几个平台,这不是梦想。眼见为实,扫描以下二维码,…

uniapp微信小程序投票系统实战 (SpringBoot2+vue3.2+element plus ) -用户投票实现

锋哥原创的uniapp微信小程序投票系统实战: uniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )_哔哩哔哩_bilibiliuniapp微信小程序投票系统实战课程 (SpringBoot2vue3.2element plus ) ( 火爆连载更新中... )共计21条视频…

爬虫利器一览

前言 爬虫(英文:spider),可以理解为简单的机器人,如此一个“不为名利而活,只为数据而生,目标单纯,能量充沛,不怕日晒雨淋,不惧寒冬酷暑”的家伙,…

[嵌入式软件][入门篇] 搭建在线仿真平台(STM32)

文章目录 一、注册平台二、创建首个项目三、硬件介绍 一、注册平台 进入官方,进行注册: 在线仿真地址 二、创建首个项目 ① 新建项目 ② 搭建一个电路 ③ 用STM32F103搭建一个简单电路 ④ 进入编码界面 三、硬件介绍 红框是必看文档&#xff…

【RT-DETR有效改进】带你分析如何确定改进的基础模型,解决模型无法收敛精度很差的问题(ResNet官方一比一复现)

一、本文介绍 Hello,各位读者,距离第一天发RT-DETR的博客已经过去了接近两个月,这段时间里我深入的研究了一下RT-DETR在ultralytics仓库的使用,旨在为大家解决为什么用v8的仓库训练的时候模型不收敛,精度差的离谱的问…

Maven 依赖管理项目构建工具 教程

Maven依赖管理项目构建工具 此文档为 尚硅谷 B站maven视频学习文档,由官方文档搬运而来,仅用来当作学习笔记用途,侵删。 另:原maven教程短而精,值得推荐,下附教程链接。 atguigu 23年Maven教程 目录 文章目…

Skywalking UI页面中操作的各种实用功能汇总

刚刚接触skywalking不久,在这里总结一下在UI页面中操作的各种实用功能,随着使用的不断深入,我也会对文章进行持续补充。 本文skywalking 的ui入口是官方demo ,版本是10.0.0-SNAPSHOT-593bd05 http://demo.skywalking.apache.org…

【GO语言依赖】Go语言依赖管理简述

在运行环境中,遭遇报错,显示找不到函数 经过研究后发现需要进行依赖管理,进行如下操作后解决: 起源 最早的时候,Go所依赖的所有的第三方库都放在GOPATH这个目录下面。这就导致了同一个库只能保存一个版本的代码。如…

vite 搭建vue3 TS项目初始框架

目录 仓库地址: 一.搭建项目 1.安装 Vite: 2.创建 Vue 3 项目: 3.进入项目目录: 4.安装依赖: 5.运行项目: 6.流程实操 二.修改项目结构,显示自定义的页面 1.整理静态样式文件 1.1.在 sr…