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 相关文章推荐
一些易混淆且不常用的属性,希望有用
Jan 29 Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
Mar 15 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
Nov 06 Javascript
详解JavaScript中的客户端消息框架设计原理
Jun 24 Javascript
基于JavaScript实现生成名片、链接等二维码
Sep 20 Javascript
JavaScript判断表单为空及获取焦点的方法
Feb 12 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
Javascript简写条件语句(推荐)
Jun 12 Javascript
jquery.validate表单验证插件使用方法解析
Nov 07 Javascript
深入理解jQuery()方法的构建原理
Dec 05 Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 13 Javascript
如何在JavaScript中创建具有多个空格的字符串?
Feb 23 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 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
PHP实现的登录页面信息提示功能示例
2017/07/24 PHP
textarea的value是html文件源代码,存成html文件的代码
2007/04/20 Javascript
js常见表单应用技巧
2008/01/09 Javascript
JavaScript的Cookies
2008/01/16 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
关于IE BUG与字符串截取substr的解决办法
2013/04/10 Javascript
jQuery实现动画效果的实例代码
2013/05/07 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
jquery实现简单的自动播放幻灯片效果
2015/06/13 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
Angular 2.x学习教程之结构指令详解
2017/05/25 Javascript
Vue组件通信之Bus的具体使用
2017/12/28 Javascript
JS和Canvas实现图片的预览压缩和上传功能
2018/03/30 Javascript
Node.js 使用AngularJS的方法示例
2018/05/11 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
详解JSON和JSONP劫持以及解决方法
2019/03/08 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
JS工厂模式开发实践案例分析
2019/10/17 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
Python使用pickle模块存储数据报错解决示例代码
2018/01/26 Python
python中datetime模块中strftime/strptime函数的使用
2018/07/03 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
Python3 Post登录并且保存cookie登录其他页面的方法
2018/12/28 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
win10安装python3.6的常见问题
2020/07/01 Python
公司联欢晚会主持词
2014/03/22 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
运动会宣传口号
2014/06/09 职场文书
学生干部培训方案
2014/06/12 职场文书
学生会竞选演讲稿怎么写
2014/08/26 职场文书
单位委托函范文
2015/01/29 职场文书
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android