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

Vue中如何拼接输入框文本与URL生成动态跳转链接

Vue动态拼接跳转URL实现方案

写法错误点

  • {{}}是Vue模板专属插值语法,仅可用于组件模板的DOM文本位置,不能写在data内的JS字符串中,也不能作为绑定属性内的静态占位符使用
  • ES6模板字符串必须用反引号()包裹,不能使用单/双引号,变量占位符格式为${变量名}`,不需要额外嵌套大括号
  • 初始化data时提前拼接link地址无效:usersrc是随用户输入实时变化的响应式值,data初始化阶段没有用户输入内容,提前拼接的静态字符串不会跟随输入自动更新
  • 两处基础写法问题:usersrc初始值写this.usersrc会报取值错误,初始值设为空字符串即可;模板中v-for遍历的是storedData,data里定义的数组名是items,名称不匹配会导致列表渲染失败
  • 之前尝试的两种错误写法本质都是把动态变量当静态字符串写死,不会读取实时的usersrc值:
    // 错误:单引号包裹是普通字符串,+'usersrc'会被当成普通文本拼接,不是读取变量
    link:"https://facebook.com/+'usersrc'"
    // 错误:{{}}不能在JS字符串里用,不会被解析成变量
    link:"https://facebook.com/{{usersrc}}"
    

正确实现代码

JS逻辑部分

只需要在站点配置里存固定的基础域名,不要提前拼接动态用户名:

export default {
  components: {
    AppLayout,
  },  
  data() {
    return {
      usersrc: '', // 绑定输入框的响应式变量,初始值为空
      storedData: [ // 和模板遍历的数组名保持一致
        {id:1, name: "Facebook" , baseLink: "https://facebook.com/"},
        // 其他站点按相同格式配置基础链接即可
      ]
    }
  }
}

模板部分

在绑定href属性时,实时拼接基础链接和用户输入的用户名即可,输入框v-model绑定保持不变:

<input type="text" name="text" placeholder="Username" id='username' v-model="usersrc">
<div v-for="item in storedData" :key="item.id">
  <!-- 动态拼接基础地址和用户输入值,每次输入变化时href会自动更新 -->
  <a :href="item.baseLink + usersrc.trim()" target="_blank">
    <p>{{item.name}}</p>
    <p :id="item.id + 'availability'"></p>
  </a>
</div>

补充:加.trim()是自动过滤用户输入内容首尾的空格,避免拼接出无效地址。如果用户输入为空时不想允许跳转,可以再加判断给href加禁用逻辑,或者在点击时判断提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:42:27