解决el-input输入框输入数组传参报错

文章目录

一、

该问题是由于JSON规范要求字符串必须使用双引号(")而非单引号(')导致的。

以下是完整的解决方案:

javascript 复制代码
// 转json
const strictParse = input => {
  try {
    // 先尝试标准JSON解析
    return JSON.parse(input)
  } catch {
    try {
      // 二次尝试替换引号
      return JSON.parse(input.replace(/'/g, '"'))
    } catch {
      return input // 返回空数组或抛出错误
    }
  }
}



  // 函数再次赋值
  const fnn = (keyValue) => {
    const parsedArray = strictParse(keyValue)
    // console.log('%c【' + 'parsedArray' + '】打印', 'color:#fff;background:#0f0', parsedArray, typeof parsedArray)
    if (Array.isArray(parsedArray)) {
      // 得到标准数组 ["safe_zone", "node_type"]
      msg.value = parsedArray
    } else if (typeof parsedArray == "object") {
      // 对象
      msg.value = parsedArray
    } else {
      msg.value = keyValue
    }
  }

二、DeepSeek回答

在Vue中使用el-input组件时,当输入数组类型数据出现JSON字符串化问题,可通过以下方案解决:

  1. 使用JSON.parse转换(推荐方案)
javascript 复制代码
<el-input v-model="inputValue" @change="handleInputChange"></el-input>

// 方法处理
const handleInputChange = (value) => {
  try {
    const parsedArray = JSON.parse(value)
    if(Array.isArray(parsedArray)){
      // 得到标准数组 ["safe_zone", "node_type"]
    }
  } catch(e) {
    console.error('解析失败')
  }
}
  1. 自定义双向绑定处理
javascript 复制代码
<el-input 
  :value="JSON.stringify(inputArray)" 
  @input="val => inputArray = parseInput(val)"
></el-input>

// 解析方法
const parseInput = (str) => {
  try {
    return JSON.parse(str)
  } catch {
    return []
  }
}
  1. 使用计算属性中转
javascript 复制代码
const computedArray = computed({
  get: () => JSON.stringify(inputArray),
  set: (val) => {
    try {
      inputArray.value = JSON.parse(val)
    } catch {}
  }
})

关键问题分析:

  • el-input的v-model默认会字符串化数组类型数据
  • 需要手动处理JSON字符串与数组的转换
  • 推荐方案1在保证数据安全性的同时实现需求
相关推荐
daols885 小时前
vxe-table 渲染器教程一:实现金额输入控件
javascript·vue.js·vxe-table
触底反弹6 小时前
🔥 React 零基础入门(中):500 行屎山代码到组件化的蜕变
前端·javascript·react.js
不好听6136 小时前
React vs Vue:两大前端框架技术选型深度对比
前端·vue.js·react.js
腻害兔7 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:字典、短信、邮件、通知——后台系统的“基础设施四件套“!
java·前端·vue.js·产品经理·ai编程
腻害兔9 小时前
【若依项目-产品经理视角】RuoYi-Vue-Pro 源码拆解:支付模块 yudao-module-pay,一个让产品经理都看懂的支付中台设计
java·前端·vue.js·产品经理·ai编程
张元清10 小时前
React useResizeObserver Hook:追踪元素尺寸变化(2026)
javascript·react.js
瑞瑞小同学13 小时前
处理echarts x轴内容过多,重叠问题
前端·javascript·echarts
像我这样帅的人丶你还13 小时前
MCP + npm:给五年前的老系统接上AI
前端·javascript·agent
Larcher14 小时前
LangChain RAG 排错实录:.env 为什么没有生效
vue.js·后端
一个写前端的15 小时前
基于 Vue 3 的大文件分片上传组件,支持断点续传、并发上传、失败重试等功能
前端·javascript·vue.js