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 Select操作大集合
May 26 Javascript
DOM2非标准但却支持很好的几个属性小结
Jan 21 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
Nov 21 Javascript
js获取select选中的option的text示例代码
Dec 19 Javascript
浅谈JavaScript 标准对象
Jun 02 Javascript
js 轮播效果实例分享
Dec 28 Javascript
node.js实现复制文本到剪切板的功能
Jan 23 Javascript
js return返回多个值,通过对象的属性访问方法
Feb 21 Javascript
详解Vue 2.0封装axios笔记
Jun 22 Javascript
手把手15分钟搭一个企业级脚手架
Sep 16 Javascript
微信公众号服务器验证Token步骤图解
Dec 30 Javascript
javascript实现移动端触屏拖拽功能
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
成本8450万,票房仅2亿,口碑两极分化,又一部DC电影扑街了
2020/04/09 欧美动漫
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
php 删除指定文件夹的实例讲解
2017/07/25 PHP
让低版本浏览器支持input的placeholder属性(js方法)
2013/04/03 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
jQuery实现的图片分组切换焦点图插件
2015/01/06 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
使用bootstrap插件实现模态框效果
2017/05/10 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
详解如何在Angular优雅编写HTTP请求
2018/12/05 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
微信提示 在浏览器打开 效果实现过程解析
2019/09/10 Javascript
JS实现随机点名器
2020/04/12 Javascript
vue 动态设置img的src地址无效,npm run build 后找不到文件的解决
2020/07/26 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
python中urllib模块用法实例详解
2014/11/19 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
Python函数中的可变长参数详解
2019/09/12 Python
django框架ModelForm组件用法详解
2019/12/11 Python
使用python 计算百分位数实现数据分箱代码
2020/03/03 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
英国和世界各地预订便宜的酒店:LateRooms.com
2019/05/05 全球购物
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
医院检讨书范文
2014/02/01 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
经典禁毒标语
2014/06/16 职场文书
公务员上班玩游戏检讨书
2014/09/17 职场文书
2015年度物流工作总结
2015/04/30 职场文书
2015年度招聘工作总结
2015/05/28 职场文书
python3 实现mysql数据库连接池的示例代码
2021/04/17 Python