You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue.js中如何在字符串内引用string类型prop实现动态值拼接

实现方法

Vue模板中要在属性值里插入prop/变量,不能直接在静态属性的引号内写插值语法,必须先用v-bind(可缩写为:)将属性标记为动态绑定,绑定后的属性值内部支持原生JavaScript表达式,可以直接用模板字符串拼接变量。

正确代码示例

首先确保组件已经正确声明接收valueId prop:

  • Vue3 <script setup> 语法:
<script setup>
defineProps({
  valueId: {
    type: String,
    required: true
  }
})
</script>
  • Vue2/选项式API语法:
<script>
export default {
  props: {
    valueId: {
      type: String,
      required: true
    }
  }
}
</script>

模板部分用动态绑定+模板字符串拼接地址:

<template>
    <div>
        <iframe 
            :src="`https://app.com/apikey=12345qwerty&valueid=${valueId}`" 
            frameborder="0"
        ></iframe>
    </div>
</template>

也可以用普通字符串拼接实现相同效果:

<iframe :src="'https://app.com/apikey=12345qwerty&valueid=' + valueId" frameborder="0"></iframe>

之前写法失效原因

  • 直接在无:前缀的静态src属性里写${valueId}、[valueId]:静态属性的内容会被Vue完全当做纯文本解析,不会读取变量值,最终会把${valueId}这类符号原样拼到链接地址中,无法拿到传入的prop。
  • 直接给src属性值套反引号且不加:前缀:不符合HTML属性语法规范,属性值无引号包裹时不能包含反引号、$、{}这类特殊字符,因此会触发ESLint解析报错。

内容的提问来源于stack exchange,提问作者user5481714

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:03:20