vue v-on:click传递动态参数的步骤


Posted in Javascript onSeptember 11, 2020

最近项目中要为一个循环列表动态传送当前点击列的数据,查了很久资料也没有一个完美的解决方案,

新手只能用vue的事件处理器与jquery的选择器做了一个不伦不类的方案,居然也能解决这个问题,作此记录留待以后会有更好的方法解决这个事情

需求:根据每列传递的参数,决定弹窗后面是积分够了去直接购买还是不够需要去转换

vue v-on:click传递动态参数的步骤

vue v-on:click传递动态参数的步骤

二、页面代码[无法可传的参数,我把它放进了一个自定义标签date-id]

<div class="ticket-main">
     <a href="javascript:void(0);" rel="external nofollow" class="weui_media_box weui_media_appmsg weui_media_box_bg" v-for="item in mediaBox" :date-id="item.num" v-on:click="upHref($event)">
       <div class="weui_media_hd">
         <img class="weui_media_appmsg_thumb" :src="item.mediaBoxImg" alt="" />
       </div>
       <div class="weui_media_bd">
         <h4 class="weui_media_title" v-text="item.name">双色球彩票一注</h4>
         <p class="weui_media_desc"><span class="icon icon-2"></span><span v-text="item.price"></span>钡</p>
       </div>
     </a>
   </div>

三、js代码

var secretRecipe = new Vue({
  el: "#secret-recipe",
  data: {
    pointsNum: [],
    mediaBox:[]
  },
  methods:{
    upHref:function(e){
      hrefSrc(e.currentTarget);
    }
  }
});
var prize=[
  {mediaBoxImg:"../b2b-reception/images/secret/icon_01.png",name:"双色球彩票一注",price:'250',num:"1"},
  {mediaBoxImg:"../b2b-reception/images/secret/icon_02.png",name:"50M流量",price:'230',num:"2"},
  {mediaBoxImg:"../b2b-reception/images/secret/icon_03.png",name:"景点抽抽乐",price:"300",num:"3"}
  ];
$(function(){  
  secretRecipe.mediaBox = prize;  
})

function hrefSrc(v){
  console.log($(v).attr("date-id"));
  $.modal({
    title: "支付方式",
    text: "选择你的支付方式",
    buttons: [
     { text: "转化积分", onClick: function(){ $.alert("你选择了转化积分"); } },
     { text: "立即购买", onClick: function(){ $.alert("你选择了立即购买"); } },
     { text: "取消", className: "default"},
    ]
   });
}

重点说明:$event,官方文档中是说该对象【在监听原生 DOM 事件时,方法以事件为唯一的参数。如果使用内联语句,语句可以访问一个 $event 属性:v-on:click="handle('ok', $event)"。】

handle(e){e.currentTarget}

方法接收时取的是点击的该DOM本身

handle(e){e.target}

方法接收时取的是点击的该元素

handle(e){e.target.tagName}

方法接收时取的是点击的该元素的标签名(如div.p.img)

补充知识:VUE之命令行报错:Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead 解决办法

Failed to compile.

./node_modules/vue-loader/lib/template-compiler?{"id":"data-v-59926570","hasScoped":true,"transformToRequire":{"video":["src","poster"],"source":"src","img":"src","image":"xlink:href"},"buble":{"transforms":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/page/home/Home.vue (Emitted value instead of an instance of Error)

Error compiling template:

<div><el-header class="animated faedOutUp"><myHeader></myHeader></el-header></div> <div>这里才是首页</div>

- Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead.

@ ./src/page/home/Home.vue 11:0-366

@ ./src/router/index.js

@ ./src/main.js

@ multi (webpack)-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js

写vue时经常被一大片报错惊了个呆

其实很多时候,都是些小毛病

比如这次,从文字翻译上来讲,其实Component template should contain exactly one root element. If you are using v-if on multiple elements, use v-else-if to chain them instead这句话已经讲的很明白了,直译出来 就是:组件模板应

该包含一个根元素。如果在多个元素上使用V-IF,则使用V-ELS-IF来链接它们。

但是这么说依然让新手有点摸不着头脑,其实就是说在模版里只能有一个主div(根对象),如果有多个元素,请用一个主div包含他们

错误代码如下:

<template>
 <div><el-header class="animated faedOutUp"><myHeader></myHeader></el-header></div>
 <div>这里才是首页</div>
</template>

修改后如下

<template>
 <div>
  <el-header class="animated faedOutUp"><myHeader></myHeader></el-header>
  <div>这里才是首页</div>
 </div>
</template>

保存运行,错误解决了!

vue v-on:click传递动态参数的步骤

以上这篇vue v-on:click传递动态参数的步骤就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript中的对象和数组的应用技巧
Jan 07 Javascript
extjs 学习笔记(一) 一些基础知识
Oct 13 Javascript
javascript 三种方法实现获得和设置以及移除元素属性
Mar 20 Javascript
js验证输入是否为手机号码或电话号码示例
Dec 30 Javascript
JS验证邮件地址格式方法小结
Dec 01 Javascript
js获取腾讯视频ID的方法
Oct 03 Javascript
Bootstrap CSS布局之列表
Dec 15 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
Jan 13 Javascript
Vuejs 组件——props数据传递的实例代码
Mar 07 Javascript
解决vue build打包之后首页白屏的问题
Mar 06 Javascript
微信小程序左滑动显示菜单功能的实现
Jun 14 Javascript
vue-router跳转时打开新页面的两种方法
Jul 29 Javascript
vue Cli 环境删除与重装教程 - 版本文档
Sep 11 #Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
Sep 11 #Javascript
请求时token过期自动刷新token操作
Sep 11 #Javascript
vue+axios 拦截器实现统一token的案例
Sep 11 #Javascript
Vue axios获取token临时令牌封装案例
Sep 11 #Javascript
Vue-cli4 配置 element-ui 按需引入操作
Sep 11 #Javascript
vue 子组件和父组件传值的示例
Sep 11 #Javascript
You might like
纯php打造的tab选项卡效果代码(不用js)
2010/12/29 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
360搜索引擎自动收录php改写方案
2018/04/28 PHP
PHP利用DWZ.CN服务生成短网址
2019/08/11 PHP
在JS中最常看到切最容易迷惑的语法(转)
2010/10/29 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
javascript工具库代码
2012/03/29 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
jQuery替换textarea中换行的方法
2015/06/10 Javascript
JavaScript的jQuery库中function的存在和参数问题
2015/08/13 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
优化Vue项目编译文件大小的方法步骤
2019/05/27 Javascript
python实现dnspod自动更新dns解析的方法
2014/02/14 Python
Python的函数的一些高阶特性
2015/04/27 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
python 使用正则表达式按照多个空格分割字符的实例
2018/12/20 Python
python实现批量修改文件名
2020/03/23 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
css3针对移动端卡顿问题的解决(动画性能优化)
2020/02/14 HTML / CSS
PHP面试题及答案一
2012/06/18 面试题
农药学硕士毕业生自荐信
2013/09/25 职场文书
服装设计行业个人的自我评价
2013/12/20 职场文书
查环查孕证明
2014/01/10 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
事业单位鉴定材料
2014/05/25 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
写给父母的感谢信
2015/01/22 职场文书
房屋认购协议书
2015/01/29 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
python tkinter模块的简单使用
2021/04/07 Python
教你如何使用Python Tkinter库制作记事本
2021/06/10 Python
Python测试框架pytest核心库pluggy详解
2022/08/05 Golang