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
Nov 25 Javascript
[原创]站长必须要知道的javascript广告代码
May 30 Javascript
jQuery创建自己的插件(自定义插件)的方法
Jun 10 Javascript
Javascript Objects详解
Sep 04 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
Jun 19 Javascript
Bootstrap 附加导航(Affix)插件实例详解
Jun 01 Javascript
js 中文汉字转Unicode、Unicode转中文汉字、ASCII转换Unicode、Unicode转换ASCII、中文转换
Dec 06 Javascript
JS实现加载和读取XML文件的方法详解
Apr 24 Javascript
初学node.js中实现删除用户路由
May 27 Javascript
微信小程序canvas绘制圆角base64图片的实现
Aug 18 Javascript
layui type2 通过url给iframe子页面传值的例子
Sep 06 Javascript
在vue和element-ui的table中实现分页复选功能
Dec 04 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
destoon二次开发常用数据库操作
2014/06/21 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
phpstorm 配置xdebug的示例代码
2019/03/31 PHP
js函数的引用, 关于内存的开销
2012/09/17 Javascript
js delete 用法(删除对象属性及变量)
2014/08/24 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
JavaScript实现复制内容到粘贴板代码
2016/03/31 Javascript
基于JavaScript实现回到页面顶部动画代码
2016/05/24 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
2017/05/26 Javascript
ReactNative之键盘Keyboard的弹出与消失示例
2017/07/11 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
python妙用之编码的转换详解
2017/04/21 Python
Python向日志输出中添加上下文信息
2017/05/24 Python
Python爬虫之模拟知乎登录的方法教程
2017/05/25 Python
django认证系统实现自定义权限管理的方法
2018/07/16 Python
python基础 range的用法解析
2019/08/23 Python
python多线程实现TCP服务端
2019/09/03 Python
Python timeit模块的使用实践
2020/01/13 Python
IE10 Error.stack 让脚本调试更加方便快捷
2013/04/22 HTML / CSS
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
俄罗斯达美乐比萨外送服务:Domino’s Pizza
2020/12/18 全球购物
常用UNIX 命令(Linux的常用命令)
2013/07/10 面试题
数学系个人求职信范文
2014/01/30 职场文书
珍珠鸟教学反思
2014/02/01 职场文书
电子商务专业求职信
2014/03/08 职场文书
承诺书范本
2015/01/21 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python