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 相关文章推荐
js 事件处理函数间的Event物件是否全等
Apr 08 Javascript
由Javascript实现的页面日历
Nov 04 Javascript
javascript异步处理工作机制详解
Apr 13 Javascript
jQuery实现带分组数据的Table表头排序实例分析
Nov 24 Javascript
JavaScript数组实现数据结构中的队列与堆栈
May 26 Javascript
基于bootstrap实现收缩导航条
Mar 17 Javascript
JavaScript实现移动端轮播效果
Jun 06 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
Sep 18 Javascript
Angular 如何使用第三方库的方法
Apr 18 Javascript
详解在Node.js中发起HTTP请求的5种方法
Jan 10 Javascript
使用kbone解决Vue项目同时支持小程序问题
Nov 08 Javascript
js刷新页面location.reload()用法详解
Dec 09 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
这东西价格,可以买几台TECSUN S-2000
2021/03/02 无线电
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
Laravel 自动生成验证的实例讲解:login / logout
2019/10/14 PHP
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
JS简单生成随机数(随机密码)的方法
2017/05/11 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
Python解析json文件相关知识学习
2016/03/01 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
PyTorch中的Variable变量详解
2020/01/07 Python
python判断两个序列的成员是否一样的实例代码
2020/03/01 Python
一款基于css3麻将筛子3D翻转特效的实例教程
2014/12/31 HTML / CSS
Hotter Shoes英国官网:英伦风格,舒适的鞋子
2017/12/28 全球购物
DTD的含义以及作用
2014/01/26 面试题
创业大赛策划书
2014/03/01 职场文书
个人授权委托书范本
2014/04/03 职场文书
安全责任书范本
2014/04/15 职场文书
竞选村长演讲稿
2014/04/28 职场文书
企业爱岗敬业演讲稿
2014/09/04 职场文书
公安交警中队队长个人对照检查材料思想汇报
2014/10/05 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
2015年实习单位评语
2015/03/25 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
保险公司增员口号
2015/12/25 职场文书
python 三边测量定位的实现代码
2021/04/22 Python