Vue组件创建和传值的方法


Posted in Javascript onAugust 17, 2018

## 创建组件的3种方法

# 第一种:
 + Vue.extend()函数返回一个组件的构造器,里面包含一个参数,参数是对象,对象里面是一些配置项
+ Vue.component()函数利用Vue.extend()返回的构造器创建一个组件的实例,有两个参数.;
参数1:组件名字,参数2:组件构造器

 注意:
      模板template中只能有一个根节点

    组建的名字采用驼峰命名的话,使用时,就要加上"-"; 例如:组件名字indexA-->index-a;

## 第二种:
 + Vue.component('indexB',{模板})

## 第三种:
 + 通过制定模板创建,在Vue管辖范围之外定义模板

## 总结:
 + 先制造一个模板,在创建组件

## 组件中使用指令:
 + 在Vue.component()里边,有template模板,有data()函数,有methods()方法
+ 注意:data()必须是一个个函数.不能使用属性定义;函数里边return出去一个对象

## 父组件传值给子组件的方法

* 先创建好父组件和子组件
* 在父组件的模板中的son,子组件标签里绑定 :属性 = 父组件需要传递的数据;
 * 在子组件的son{}中  使用props来接收父组件传递过来的数据;
 * props后跟一个数组,数组中是一个个字符串,这些字符串可以当成属性使用,即props:['属性名']

 * 代码如下:

    *

Vue.component('father',{
    template:'<div>....<son :myName="mySonName"></son></div>',
    data(){
      return{
        mySonName:'小明'
      }
    },
    //子组件
    components:{
      son:{
        props:['myName'],
        template:'...{{myName}}'
      }
    }
  })

 ## 子组件传值给父组件的方法
* 先创建好父组件和子组件;

* 在子组件methods方法中使用this.$emit()方法,
     * 这个方法有两个参数;参数1:需要与父组件交换事件名称,参数2:要传递的数据;

* 在父组件模板的son标签中使用方法名的传递:

即,@tellFatherMyname = "getMySonName";

* 在父组件的methods方法中传入data参数,这个data=子组件传递过来的数据,然后让mySonName = data;*

代码如下:     

<div id="app">
    <father></father>
  </div>
  <script>
    Vue.component('father',{
      template:`<div>
      <p>我的儿子告诉我他叫{{mySonName}}</p>
      <son @tellFatherMyname="getMySonName"></son>
      </div>`,
      data(){
        return {
          mySonName:'???'
        }
      },
      methods:{
        getMySonName(data){
          console.log(data);
          this.mySonName = data;
        }
      },
      components: {
        son:{
          data(){
            return {
            myName :'小明'
            }
          },
          template:`
              <button @click = "emitMyname">点击就告诉父亲我叫{{myName}}          
              </button>`,
          //在子组件的methods中使用this.$emit()来传递值;
          //$emit()有2个参数;参数1:需要交换的事件名,参数2:要传递的数据;例 
            如:this.name
          methods:{
            emitMyname(){
              this.$emit('tellFatherMyname',this.myName)
            }
          }
        }
      }
    })
    var vm = new Vue({
      el:'#app',
      data:{
      }
    })
  </script>

### 兄弟组件的创建和传值:

 * 创建兄弟组建时,先创建好父组件,然后在子组件中创建son组件 和 daughter组件;
 * 接下来是 son组件 和daughter组件之间传值;
 *  dau --> son传值

* 在dau中 先通过事件总线发射一个事件名称和要传递的数据;即eventbus.$emit('事件名称','数据')
     *  事件总线:

var eventbus = new Vue();

* 在 son 中先写一个钩子函数,再通过eventbus.$on('事件名称',data=>{})方法去监听,接收兄弟节点发射过来的事件
*  $on()有两个参数,参数1:事件名称;参数2:函数,函数的默认值是传递过来的数据* 代码如下:
     * 

<div id="app">
    <!-- 在此处渲染到页面上 -->
    <father></father>
  </div>
  <script>
    //先创建一个vue空实例,作为事件总线
    var eventbus = new Vue();
    Vue.component('father',{
      //组件显示的模板
      template:`<div>
            <son></son>
            <daughter></daughter>
          </div>`,
      components: {
        son:{
          data(){
           return {
            mySisterName:'???'
           }
          },
          //组件显示的模板
          template:'<p>我的妹妹告诉我她叫{{mySisterName}}</p>',
          //采用钩子函数
          //在钩子函数中通过eventbus.$on('同一个事件名称',data)来接收传递过来的数据
          mounted(){
            eventbus.$on('tellBroMyName',data=>{
              this.mySisterName = data;
            })
          }
        },
        daughter:{
          data(){
           return {
            myName:'兰兰'
           }
          },
          template:'<button @click="emitMyName">点击就告诉哥哥我叫{{myName}}</button>',
          methods:{
            //只要点击按钮,就将事件和数据一起传递过去
            emitMyName(){
              eventbus.$emit('tellBroMyName',this.myName)
            }
          }
        }
      }
    })
    var vm = new Vue({
      el:'#app',
      data:{
      }
    })
  </script>

总结

以上所述是小编给大家介绍的Vue组件创建和传值的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
深入认识JavaScript中的函数
Jan 22 Javascript
jQuery 处理网页内容的实现代码
Feb 15 Javascript
Jquery插件写法笔记整理
Sep 06 Javascript
B/S模式项目中常用的javascript汇总
Dec 17 Javascript
javascript设计模式之解释器模式详解
Jun 05 Javascript
Javascript中设置默认参数值示例
Sep 11 Javascript
jQuery为DOM动态追加事件的方法
Feb 16 Javascript
vuejs 动态添加input框的实例讲解
Aug 24 Javascript
Js代码中的span拼接问题解决
Nov 22 Javascript
JS组件库AlloyTouch实现图片轮播过程解析
May 29 Javascript
vue中v-for循环选中点击的元素并对该元素添加样式操作
Jul 17 Javascript
手把手教你实现 Promise的使用方法
Sep 02 Javascript
webpack多入口多出口的实现方法
Aug 17 #Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
Aug 17 #Javascript
layer.open关闭父窗口 以及调用父页面的方法
Aug 17 #Javascript
vue+element的表格实现批量删除功能示例代码
Aug 17 #Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
Aug 17 #Javascript
浅析vue给不同环境配置不同打包命令
Aug 17 #Javascript
React中使用async validator进行表单验证的实例代码
Aug 17 #Javascript
You might like
php curl模拟post提交数据示例
2013/12/31 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
2014/04/25 PHP
Symfony2 session用法实例分析
2016/02/04 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
Javascript实现的鼠标经过时播放声音
2010/05/18 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
探讨js中的双感叹号判断
2013/11/11 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
jQuery控制frames及frame页面JS的方法
2016/03/08 Javascript
Angular.js回顾ng-app和ng-model使用技巧
2016/04/26 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
node.js实现博客小爬虫的实例代码
2016/10/08 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
2016/12/13 Javascript
ReactNative实现图片上传功能的示例代码
2017/07/11 Javascript
Vue Transition实现类原生组件跳转过渡动画的示例
2017/08/19 Javascript
十个免费的web前端开发工具详细整理
2017/09/18 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
JS数组及对象遍历方法代码汇总
2020/06/16 Javascript
python多线程编程方式分析示例详解
2013/12/06 Python
Python判断两个对象相等的原理
2017/12/12 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
解决Jupyter notebook更换主题工具栏被隐藏及添加目录生成插件问题
2020/04/20 Python
python如何从键盘获取输入实例
2020/06/18 Python
python Paramiko使用示例
2020/09/21 Python
幼儿园春游活动方案
2014/01/19 职场文书
安全生产年活动总结
2014/08/29 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP
Python排序算法之插入排序及其优化方案详解
2021/06/11 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript