首页 > 其他分享 >解决vue3中抽离出来的js如何调用页面的方法

解决vue3中抽离出来的js如何调用页面的方法

时间:2023-09-14 19:15:30浏览次数:37  
标签:vue const value js record link 抽离 vue3

有时我们会用render渲染表格的columns,里面的按钮如何去调用.vue文件的方法?
思路; 在.vue文件中我们通过参数的方式传给.js文件,然后用变量接收,点击时执行 (注意:.vue文件中setup执行比较早,按钮是点击事件,不会主动执行函数。为防止函数未声名就当做参数传递,必须在最后执行getFn函数,和defineExpose位置一样)

实现如下:

// .vue 文件
import { getFn } from './list.js'

// 这行代码一定要写在最后  保证函数执行时,所有参数已经声名
getFn({ changeStatusItem, viewInfo, addTabs })
// .js 文件

const changeStatusItemFn = ref(null)
const viewInfoFn = ref(null)
const addTabsFn = ref(null)
export const getFn = ({ changeStatusItem, viewInfo, addTabs }) => {
  changeStatusItemFn.value = changeStatusItem
  viewInfoFn.value = viewInfo
  addTabsFn.value = addTabs
}

// 使用时
  {
    title: '操作',
    dataIndex: 'operating',
    key: 'operating',
    width: 260,
    fixed: 'right',
    customRender: ({ record }) => {
      return h('div', {}, [
        h(
          Button,
          {
            class: 'table-operate-link_error',
            type: 'link',
            onClick() {
              changeStatusItemFn.value(record)
            }
          },
          {
            default: () => (record.status ? '禁用' : '启用')
          }
        ),
        h(
          Button,
          {
            class: 'table-operate-link',
            type: 'link',
            onClick() {
              addTabsFn.value(!record.status ? 'edit' : 'view', record)
            }
          },
          {
            default: () => (record.status ? '查看' : '编辑')
          }
        ),
        h(
          Button,
          {
            class: 'table-operate-link',
            type: 'link',
            disabled: !record.status,
            onClick() {
              viewInfoFn.value(record.id)
            }
          },
          {
            default: () => '事件'
          }
        )
      ])
    }
  }

标签:vue,const,value,js,record,link,抽离,vue3
From: https://www.cnblogs.com/demoTimes/p/17703189.html

相关文章

  • 常用JSP文件上传,下载的一些方法
    文件上传在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用java开发的文件上传组件,下面我介绍几种有关文件上传组件。一.基于org.apache.struts.upload.FormFile的文件上传。这种方法相对比较简单。原理是在Actionform中定义一个FormFile类型的属性f......
  • ArcGIS API for JS4.8绘制点、线、面、矩形、圆
    实现代码使用ArcGISAPIforJS4.8绘制点(Point)、线(Polyline)、面(Polygon)、矩形(Rectangle)、圆(Circle),使用Draw绘制,具体代码如下:<!DOCTYPEhtml><html><head><metacharset="utf-8"/><title>ArcGISdemo</title><linktyp......
  • Jquery 将 JSON 列表的 某个属性值,添加到数组中
    jquery将JSON列表的某个属性值,添加到数组中如果你有一个JSON列表,并且想要将每个对象的某个属性值添加到数组中,你可以使用jQuery的$.each()函数来遍历JSON列表,并获取所需的属性值。以下是一个示例代码:varjsonList=[{"name":"John","age":30,"city":"NewYork......
  • js浏览器通信postMessage
    1、背景:一个应用中内嵌了iframe,外层应用需要知道iframe做了一些具体的操作来更新页面,所以需要用到postMessage2、代码模块发起方:window.parent.postMessage({type:'sign-event',//事件名,内外层统一data:{data:data//需要传递的参数},......
  • vue3 elementplus 列表中添加排序功能,移动的时候修改背景色
    <el-tablesize="medium":border="true":data="branchTableData":row-style="changeColor":stripe=falsestyle="width:100%;">......
  • requests中post参数data和json区别:
    HTTP协议规定将一个完整的HTTP请求分为三个部分:请求头、请求行、请求体 大概框架如下: <method><request-URL><version> <headers> <body> POSThttp://httpbin.orgHTTP/1.1 Content-Type:application/x-www-form-urlencoded;charset=utf-8 a_test=112233&b_test=223......
  • vue 数学公式js加载
    <script>document.addEventListener("DOMContentLoaded",function(){renderMathInElement(document.body,{//customisedoptions//•auto-renderspecifickeys,e.g.:delimiters:[{left:'$......
  • js:上传图片,通过file对象或blob对象获取用于显示的url,获取图片的base64编码;限制文件类
    1//URL.createObjectUrl(file):同步执行;创建一个指向file/blob对象的url,可用于元素的src/href属性23//fileReader.readAsDataURL():异步执行;读取file/blob对象的内容,result属性将返回一个包含data:URL格式的base64字符串45//fileReader.readAsDataURL()是异步的,所......
  • JSP页面实现上传下载
     本文使用的是smartupload工具实现文件的上传下载:工具:1、Eclipse2、jspsmart.jar(百度搜索jspsmartupload.jar下载) JSP页面: 1<%--上传--%> 2<formaction="upload"method="post"enctype="multipart/form-data"> 3<inputtype="file&quo......
  • vue3项目 基于vuedraggable插件实现拖拽上下移动
    //父页面<template><divclass="main_body"><blockTitletitle="事件详情"/><a-formref="formRef":model="formValue"style="width:100%"class="form_bo......