vue props传值失败 输出undefined的解决方法


Posted in Javascript onSeptember 11, 2018

如果在prop中传的值为一个没有使用特殊命名规则的变量如:(type),可以顺利传值:

<code class="language-html"><div id="app"> 
<test :type="type"></test> 
</div> 
Vue.component("test", { 
  props: ['type'], 
  template: '<div @click="a">我是按钮{{type}}</div>', 
  methods: { 
   a() { 
    console.log(this.type); 
   } 
  } 
 }); 
var app = new Vue({ 
 el: '#app', 
 data: { 
 type: 'test' 
 } 
});</code>

而当这个变量为驼峰命名法如:(selectName),就会传不过去:

<div id="app">
<test :selectName="selectName"></test>
</div>
Vue.component("test", {
  props: ['selectName'],
  template: '<div @click="a">我是按钮{{selectName}}</div>',
  methods: {
   a() {
    console.log(this.selectName);
   }
  }
 });
var app = new Vue({
 el: '#app',
 data: {
 selectName: 'test'
 }
});

解决方法是把selectName标签改为select-Name:

<div id="app">
<test :select-Name="selectName"></test>
</div>
Vue.component("test", {
  props: ['selectName'],
  template: '<div @click="a">我是按钮{{selectName}}</div>',
  methods: {
   a() {
    console.log(this.selectName);
   }
  }
 });
var app = new Vue({
 el: '#app',
 data: {
 selectName: 'test'
 }
});

总结:如果为驼峰命名法传递的话,html不区分大小写(所有的都会转换为小写),所以testName 在html表现为 :test-name ,需要注意的是vue中使用props传递时最好不要用横杆如select-name 的写法,因为使用的时候this.select-name中的横杠会认为它是减号,导致辨认不出来。在定义事件的时候最好命名都为小写,如

this.$emit("selectchange","data");

不要写成

this.$emit("selectChange","data");

html同样认不出来,比较好的方式是这种

this.$emit("select-change","data");

以上这篇vue props传值失败 输出undefined的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
做网页的一些技巧(续)
Feb 01 Javascript
写入cookie的JavaScript代码库 cookieLibrary.js
Oct 24 Javascript
artDialog双击会关闭对话框的修改过程分享
Aug 05 Javascript
JavaScript prototype 使用介绍
Aug 29 Javascript
js实现双击图片放大单击缩小的方法
Feb 17 Javascript
如何减少浏览器的reflow和repaint
Feb 26 Javascript
详解JavaScript对象的深浅复制
Mar 30 Javascript
深入浅析ES6 Class 中的 super 关键字
Oct 20 Javascript
javascript数组拍平方法总结
Jan 20 Javascript
vue的style绑定background-image的方式和其他变量数据的区别详解
Sep 03 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
Aug 17 Javascript
解决vue props 拿不到值的问题
Sep 11 #Javascript
vue首次赋值不触发watch的解决方法
Sep 11 #Javascript
JavaScript中Array方法你该知道的正确打开方法
Sep 11 #Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
Sep 11 #Javascript
详解webpack模块加载器兼打包工具
Sep 11 #Javascript
webpack css加载和图片加载的方法示例
Sep 11 #Javascript
vue1.0和vue2.0的watch监听事件写法详解
Sep 11 #Javascript
You might like
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP内核探索:哈希表碰撞攻击原理
2015/07/31 PHP
[原创]smarty简单模板变量输出方法
2016/07/09 PHP
php实现头像上传预览功能
2017/04/27 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
原生javascript实现读写CSS样式的方法详解
2017/02/20 Javascript
用vue和node写的简易购物车实现
2017/04/25 Javascript
jQuery+koa2实现简单的Ajax请求的示例
2018/03/06 jQuery
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
Vue 刷新当前路由的实现代码
2019/09/26 Javascript
vue.js封装switch开关组件的操作
2020/10/26 Javascript
js实现日历
2020/11/07 Javascript
Python正则表达式的使用范例详解
2014/08/08 Python
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
python实现清屏的方法
2015/04/30 Python
NumPy 如何生成多维数组的方法
2018/02/05 Python
python轮询机制控制led实例
2020/05/03 Python
Python如何实现远程方法调用
2020/08/07 Python
python爬虫---requests库的用法详解
2020/09/28 Python
python编程的核心知识点总结
2021/02/08 Python
美国从事品牌鞋类零售的连锁店:Famous Footwear
2016/08/25 全球购物
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
美国床垫连锁店:Mattress Firm
2021/02/13 全球购物
Internal修饰符有什么含义
2013/07/10 面试题
迟到检讨书900字
2014/01/14 职场文书
高校十八大报告感想
2014/01/27 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
浅谈Python协程asyncio
2021/06/20 Python
MySQL常用慢查询分析工具详解
2022/08/14 MySQL