vue组件学习教程


Posted in Javascript onSeptember 09, 2017

在学习vue时,组件学习比较吃力,尤其是组件间的通信,所以总结一下,官方文档的组件部分。

注册组件

全局组件

语法如下,组件模板需要使用一个根标签包裹起来。data必须是一个方法

Vue.component('component-name',{
  template:'<div><h1>标题</h1><span>作者信息</span></div>',
  data(){
    return{
      message:'组件的属性'
    }
  },
  methods:{

  }
})

局部组件

var com = {
  template:'<div><h1>标题</h1><span>作者信息</span></div>',
  data(){
    return{
      message:'组件的属性'
    }
  },
  methods:{

  }
}

new Vue({
  components:{
    'compontent-name':com
  }
})

组件通信

prop将父组件数据传给子组件

<div id='app'>
   <child :msg=message></child>
 </div>
<script>
  Vue.component('child', {
    props: ['msg'],
    template: '<p>{{msg}}</p>'
  })

  new Vue({
    el: '#app',
    data: {
      message: '父组件数据'
    }
  })
</script>

利用子组件的props选项,父组件可以向子组件传递数据,但是子组件不能求改父组件的数据。

非父子组件通信

需要使用一个空的Vue实例来管理

<div id='app'>
  <com-a></com-a>
  <com-b></com-b>
</div>
var bus = new Vue();

var coma = {
  template: '<p @click="send">{{adata}}</p>',
  data(){
    return {
      adata: 'a的数据'
    }
  },
  methods:{
    send(){
      // 触发这一事件
      bus.$emit('data-to-b', this.adata);
    }
  }
  
};

var comb= {
  template: '<p>{{bdata}}</p>',
  data(){
    return {
      bdata: 'b的数据'
    }
  },
  mounted(){
    // 监听事件,获取a组件的数据,进行相关操作
    bus.$on('data-to-b', function (msg) {
      this.bdata = msg;
    }.bind(this));
  }
};

new Vue({
  el:'#app',
  components: {
    'com-a': coma,
    'com-b': comb
  }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
jQuery插件pagination实现分页特效
Apr 12 Javascript
JS中闭包的经典用法小结(2则示例)
Dec 28 Javascript
微信小程序 本地存储及登录页面处理实例详解
Jan 11 Javascript
Javascript自定义事件详解
Jan 13 Javascript
详解vue-Resource(与后端数据交互)
Jan 16 Javascript
AngularJS实现的输入框字数限制提醒功能示例
Oct 26 Javascript
javascript+css3开发打气球小游戏完整代码
Nov 28 Javascript
vue element-ui table表格滚动加载方法
Mar 02 Javascript
node.js通过axios实现网络请求的方法
Mar 05 Javascript
微信小程序实现文字无限轮播效果
Dec 28 Javascript
JavaScript实现tab栏切换效果
Mar 16 Javascript
weex里Vuex state使用storage持久化详解
Sep 09 #Javascript
Vue2几种常见开局方式详解
Sep 09 #Javascript
使用JS动态显示文本
Sep 09 #Javascript
深入理解ES7的async/await的用法
Sep 09 #Javascript
jQuery事件对象的属性和方法详解
Sep 09 #jQuery
微信通过页面(H5)直接打开本地app的解决方法
Sep 09 #Javascript
React-Native中禁用Navigator手势返回的示例代码
Sep 09 #Javascript
You might like
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
jquery延迟加载外部js实现代码
2013/01/11 Javascript
JS判断字符串长度的5个方法(区分中文和英文)
2014/03/18 Javascript
jquery复选框多选赋值给文本框的方法
2015/01/27 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
js鼠标单击和双击事件冲突问题的快速解决方法
2016/07/11 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
AngularJS点击添加样式、点击变色设置的实例代码
2017/07/27 Javascript
五步轻松实现JavaScript HTML时钟效果
2020/03/25 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
详解微信小程序缓存--缓存时效性
2019/05/02 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
2020/07/17 Javascript
在vue中使用el-tab-pane v-show/v-if无效的解决
2020/08/03 Javascript
解决vue 使用axios.all()方法发起多个请求控制台报错的问题
2020/11/09 Javascript
更改Python命令行交互提示符的方法
2015/01/14 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
使用python实现简单五子棋游戏
2019/06/18 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
日本小田急百货官网:Odakyu
2018/07/19 全球购物
优质飞蝇钓和渔具:RiverBum
2020/05/10 全球购物
Unix/Linux开发面试题
2016/08/16 面试题
运动会跳远广播稿
2014/02/04 职场文书
母校寄语大全
2014/04/10 职场文书
个人三严三实对照检查材料思想汇报
2014/09/22 职场文书
社区节水倡议书
2015/04/29 职场文书
教师聘用意向书
2015/05/11 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
Python数据分析之pandas读取数据
2021/06/02 Python