amis 联动效果触发的几种方式

联动效果实现主要俩种方式:

1.表达式实现联动,基于组件内或数据链的变量变化的联动

比如: "source": "/amis/api/mock2/options/level2?name=${name} "    (必须是这种字符串拼接形式,在data数据映射中表达式不会触发联动)

所有初始化接口链接上使用数据映射获取参数的形式时,例如下面的query=${query},在当前数据域中,所引用的变量值(即 query)发生变化时,自动重新请求该接口

接口联动一般只适用于初始化接口,例如:

• form组件中的initApi;

• select组件中的source选项源接口url, data只能用于主动联动;

• service组件中的api和schemaApi;

• crud组件中的api;(crud 默认是跟地址栏联动,如果要做请关闭同步地址栏 syncLocation: false)

• 等等...

如果 api 地址中有变量,比如 /api/mock2/sample/${id},amis 就不会自动加上分页参数,需要自己加上,改成 /api/mock2/sample/${id}?page=${page}&perPage=${perPage}

2.平级且会创建新数据域的组件间联动,无法通过引用链获取到的变量需使用此方式

2-1.通过Form的target属性  

  form配置target属性为目标组件name值,可以在触发提交行为后,将当前表单的数据域发送给目标组件(数据域中),并触发刷新重新调查询接口.

有一个表单form组件,还有一个列表组件crud,我们想要把form提交的数据,可以用作crud的查询条件,并请求crud的接口,由于form和crud位于同一层级,因此没法使用数据链的方式进行取值

进行两个调整:

1. 为crud组件设置了name属性为mcrud

2. 为form组件配置了target属性为crud的name:mcrud

更改配置后,提交form表单时,如果有配置提交接口,会先请求提交,之后 amis 会寻找target所配置的目标组件,把form中所提交的数据,发送给该目标组件中,并将该数据合并到目标组件的数据域中,并触发目标组件的刷新操作,对于 CRUD 组件来说,刷新即重新拉取数据接口

2-1.利用target实现inputTree与crud联动效果

(input-tree必须与form结合使用,form数据域里是{input-tree的name:输入值} ,点击input-tree不同选项时就会修改form数据域里的输入值 .       

配置form的target为crud的name, 并配置"submitOnChange": true,form数据域的值变化后触发form的提交行为,提交到配置的target组件中  )  

form配置target属性为目标组件name值,可以在触发提交行为后,将当前表单的数据域发送给目标组件,并触发刷新.

{
  "type": "page",
  "id": "u:1c2c81063ddc",
  "body": [
    {
      "type": "grid",
      "columns": [
        {
          "body": [
            {
              "type": "form",
              "id": "u:388c62109ac9",
              "target": "mcrud",
              "wrapWithPanel": false,
              "resetAfterSubmit": false,
              "debug": false,
              "submitOnInit": false,
              "submitOnChange": true,
              "body": [
                {
                  "type": "input-tree",
                  "name": "modelClass",
                  "submitOnChange": true,
                  "selectFirst": true,
                  "source": {
                    "method": "get",
                    "url": "/lbserver/api/ModelClass/findOptions",
                    "cache": 5000,
                    "adaptor": "return {\n    status: 0,\n    msg: 'ok',\n    data: {\n        options:[\n{\"label\":\"全部分类\",value:\"\"},...payload.data.options\n        ]\n    }\n}",
                    "dataType": "json"
                  },
                  "height": "1000px",
                  "inline": false,
                  "inputClassName": "h-full",
                  "id": "u:c519d9987ae7",
                  "multiple": false,
                  "enableNodePath": false,
                  "hideRoot": true,
                  "showIcon": true,
                  "initiallyOpen": true
                }
              ]
            }
          ],
          "id": "u:f32da427bbcd"
        },
        {
          "body": [
            {
              "type": "crud",
              "name": "mcrud",
              "api": {
                "url": "/lbserver/api/PageTemplate",
                "method": "get",
                "replaceData": false,
                "loadDataOnce": false,
                "dataType": "json",
                "requestAdaptor": "let modelClass = api.query.modelClass;\r\nlet filter = {\r\n    'limit': api.query.perPage,\r\n    'skip': (api.query.page * api.query.perPage - api.query.perPage),\r\n    where: { modelClass: { like: modelClass || '' } },\r\n}\r\n\r\nlet url = api.url.split(\"?\")[0];\r\nurl = `${url}?filter=${JSON.stringify(filter)}`;\r\napi.url = url;\r\nreturn api;",
                "data": {
                  "&": "$$",
                  "modelClass": "${modelClass}"
                }
              },
              "columns": [
                {
                  "name": "modelClass",
                  "label": "模型分类",
                  "align": "center",
                  "width": 170,
                  "placeholder": "-",
                  "id": "u:c9b9842b2ffe",
                  "type": "tree-select",
                  "quickEdit": {
                    "mode": "inline",
                    "type": "select",
                    "label": "",
                    "name": "modelClass",
                    "checkAll": false,
                    "source": {
                      "method": "get",
                      "url": "/lbserver/api/ModelClass/findOptions",
                      "cache": 5000
                    },
                    "placeholder": "-",
                    "size": "sm",
                    "submitOnChange": true,
                    "id": "u:2c4985d29548",
                    "multiple": false,
                    "disabled": true
                  },
                  "fixed": "",
                  "disabled": true
                },
                {
                  "name": "name",
                  "label": "命名ID",
                  "align": "center",
                  "width": 280,
                  "id": "u:c9c35d484864",
                  "fixed": "",
                  "placeholder": "-"
                },
                {
                  "label": "页面名称",
                  "align": "center",
                  "width": 200,
                  "placeholder": "-",
                  "id": "u:edb4c2a1d1a4",
                  "name": "title"
                },
                {
                  "label": "描述信息",
                  "name": "desc",
                  "width": 280,
                  "type": "text",
                  "className": "word-break text-center white-space-pre",
                  "fixed": "",
                  "inline": false,
                  "toggled": true,
                  "placeholder": "-",
                  "id": "u:5fb7eb4c5190",
                  "align": "center"
                }
              ],
              "messages": {},
              "syncLocation": false,
              "perPageAvailable": [
                10
              ],
              "defaultParams": {
                "perPage": "10"
              },
              "footerToolbar": [
                {
                  "type": "bulk-actions"
                },
                {
                  "type": "pagination"
                },
                {
                  "type": "statistics",
                  "tpl": "内容"
                }
              ],
              "silentPolling": true,
              "className": "word-break ",
              "fixed": "right",
              "inline": false,
              "stopAutoRefreshWhenModalIsOpen": true,
              "toggled": true,
              "checkAll": false,
              "keepItemSelectionOnPageChange": false,
              "autoFillHeight": false,
              "id": "u:faeebfd2d01c"
            }
          ],
          "id": "u:1a430e75198f"
        }
      ],
      "id": "u:36da4c4f7f94"
    }
  ]
}

2-2.更高级更通用的是借助事件-动作(Event-Action)

比如通过setValue动作,修改另一个同级form表单的数据

动作setValue(组件中传递的参数必须是value, args: {value: {age:17} })

第一个form:

{
  "type": "form",
  "title": "表单",
  "body": [
    {
      "label": "文本框",
      "type": "input-text",
      "name": "text",
      "id": "u:fdd256b622e0"
    }
  ],
  "debug": true
}

    第二个form中配置setValue动作:

   "onEvent": {
          "click": {
            "actions": [
              {
                "componentId": "u:c123bdb1db9e", //方式一:设置到form中
                "args": {
                  "value": "${event.data}" //此组件数据域(event.data)中数据全部传入.  
                },
                "actionType": "setValue"
              },
              {
                "actionType": "custom",//方式二:setValue到input组件,直接value:组件数据即可
                "script": "\nconsole.log(context.props, event)\ndoAction({\n  actionType: 'setValue', \n  componentId: 'u:fdd256b622e0', \n  args: {value: 17 }\n});\n"
              }
            ],
            "weight": 0
          }
        }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】中的常见的重要指令(中)

目录 一、man指令 二、cp指令 三、cat指令 四、mv指令 五、more指令 六、less指令 七、head指令 八、tail指令 一、man指令 Linux的命令有很多参数,我们不可能全记住,我们可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: m…

【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结

💓 博客主页:从零开始的-CodeNinja之路 ⏩ 收录文章:【Spring Boot】深度复盘在开发搜索引擎项目中重难点的整理,以及遇到的困难和总结 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 什么是搜索引…

基于SpringBoot+Vue的人事管理系统

引言 目前,人事管理的系统大都是CS架构的大型系统,很少有面向机关,事业单位内部的基于BS架构的微型人事系统,因此.开发一个基于BS架构的人事信息管理系统是非常必要的.但是基于BS架构的人事系统对于安全是一个大的考验点.在人事信息系统中,功能需简单清晰,可操作性强,其次安全…

站在ESG“20+”新起点上,看中国ESG先锋探索力量

全链减碳、建设绿色工厂、打造零碳产品、守护生物多样性、向受灾群众捐助……不知你是否察觉,自“双碳”目标提出以来,一股“可持续发展热潮”正覆盖各行各业,并且渗透到我们衣食住行的方方面面。在资本市场,ESG投资热潮更是席卷全…

外汇天眼:风险预警!以下平台监管牌照被撤销!

监管信息早知道!外汇天眼将每周定期公布监管牌照状态发生变化的交易商,以供投资者参考,规避投资风险。如果平台天眼评分过高,建议投资者谨慎选择,因为在外汇天眼评分高不代表平台没问题! 以下是监管牌照发生…

Leetcode | 5-21| 每日一题

2769. 找出最大的可达成数字 考点: 暴力 数学式子计算 思维 题解 通过式子推导: 第一想法是二分确定区间在区间内进行查找是否符合条件的, 本题最关键的便是 条件确定 , 第二种方法: 一般是通过数学公式推导的,这种题目我称为数学式编程题 代码 条件判断式 class Solution { …

ViT:1 从DETR说起

大模型技术论文不断,每个月总会新增上千篇。本专栏精选论文重点解读,主题还是围绕着行业实践和工程量产。若在某个环节出现卡点,可以回到大模型必备腔调重新阅读。而最新科技(Mamba,xLSTM,KAN)则提供了大模型领域最新技…

探索微软Edge开发者工具:优化前端开发的艺术与科学

探索微软Edge开发者工具:优化前端开发的艺术与科学 引言:Edge开发者工具概览一、基础操作:步入DevTools的大门1.1 启动与界面布局1.2 快速导航与定制 二、元素审查与样式调整2.1 精准元素选取2.2 实时CSS编辑2.3 自动完成与内联文档 三、Java…

Spring Web MVC(2)

响应 Http响应的结果可以是数据也可以是静态页面可以针对响应设置状态码 Header信息 返回静态页面注解RestController和Controller 我们创建一个前端页面 package com.example.demo.demos.web.controller;import org.springframework.web.bind.annotation.RequestMapping; i…

【C++】<图形库> 三人成棋(面向对象写法)

目录 一、游戏需求 二、程序架构 三、代码实现 四、实现效果 五、已知BUG 一、游戏需求 构建一个五子棋游戏,在自定义棋盘宽度和高度的基础上,实现三人对战功能,并且能判定谁输谁赢。 二、程序架构 (1) 对象分析: 【1】 需…

Kata Containers零基础学习从零到一

文章目录 docker和Kata Containers的区别Docker容器共享宿主机内核每个容器实例运行在轻量级虚拟机(MicroVM)总结 通俗例子Kata Containers架构实际Kata Containers架构图解容器技术栈总结 agent和shim家长(shim进程)的角色保姆&a…

【开源】多语言大型语言模型的革新:百亿参数模型超越千亿参数性能

大型人工智能模型,尤其是那些拥有千亿参数的模型,因其出色的商业应用表现而受到市场的青睐。但是,直接通过API使用这些模型可能会带来数据泄露的风险,尤其是当模型提供商如OpenAI等可能涉及数据隐私问题时。私有部署虽然是一个解决…

【CSP CCF记录】201909-1 小明种苹果

题目 过程 #include<bits/stdc.h> using namespace std; int N,M; long long tree[1010]; int main() {cin>>N>>M;long long result0,max0;//result剩余苹果&#xff0c;max最大疏果个数 int id0;//id最大疏果的果树编号 for(int i1;i<N;i){long long b0…

手把手一起学习Python NumPy

NumPy 是用于处理数组的 python 库&#xff0c;NumPy 中的数组对象称为 ndarray&#xff0c;它提供了许多支持函数&#xff0c;使得利用 ndarray 非常容易。Numpy官方网址 NumPy 安装 使用pip安装NumPy 模块&#xff1a; pip install numpyNumPy 入门 创建numpy数组&#x…

Qt 在windows下显示中文

Qt在windows平台上显示中文&#xff0c;简直是一门玄学&#xff0c;经过测试&#xff0c;有如下发现&#xff1a; 1&#xff0c; 环境&#xff1a;Qt 5.15.2 vs2019 64位 win11系统 默认用Qt 创建的文件使用utf-8编码格式&#xff0c;此环境下 中文没有问题 ui->textE…

当面试官问出“Unsafe”类时,我就知道这场面试废了,祖坟都能给你问出来!

一、写在开头 依稀记得多年以前的一场面试中&#xff0c;面试官从Java并发编程问到了锁&#xff0c;从锁问到了原子性&#xff0c;从原子性问到了Atomic类库&#xff08;对着JUC包进行了刨根问底&#xff09;&#xff0c;从Atomic问到了CAS算法&#xff0c;紧接着又有追问到了…

用本地大模型(llama3)进行数据分类标记|LLM 用例

001&#xff5c;背景 这是我最新发布的导航站点 https://aiwith.me 这个站点由于第一版数据来源于第三方&#xff0c;只有站点基础数据&#xff0c;没有对数据进行分类&#xff0c;最近站点上线了&#xff0c;主体框架都搭建完成了&#xff0c;这才有空去对数据做分类. 目前的…

USART串口通信(stm32)

一、串口通信 通信的目的&#xff1a;将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统 通信协议&#xff1a;制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 STM32F103C8T6 USART资源&#xff1a; USART1、 USART2、 USART3 自带波特率发生器&…

数据结构:二叉树与树

一 树的基本概念&#xff1a; 1.树的形状&#xff1a; 2.树的定义&#xff1a; 树是一种非线性的数据结构&#xff0c;它是n(n > 0)个结点的有限集。当n 0时&#xff0c;称为空树。在任意一棵非空树中应满足&#xff1a; 2.1 有且仅有一个特定的称为根的结点。 2.2 当n …

【React】Ant Design 5.x版本table scroll滚动条样式自定义

新版里table的滚动条样式由:scrollbar-width、scrollbar-color接管&#xff0c;导致之前的伪类方式失效&#xff01; 环境 antd: ^5.14.1react: ^18 解决方案&#xff1a; 若想延续伪类方式修改滚动条样式&#xff0c;可以在定义伪类样式文件里加入以下片段&#xff1a; .a…