vue组件 $children,$refs,$parent的使用详解


Posted in Javascript onJuly 31, 2017

本文介绍了vue组件 $children,$refs,$parent的使用,分享给大家,也自己留个笔记

如果项目很大,组件很多,怎么样才能准确的、快速的寻找到我们想要的组件了??

1)$refs

首先你的给子组件做标记。demo :<firstchild ref="one"></firstchild>

然后在父组件中,通过this.$refs.one就可以访问了这个自组件了,包括访问自组件的data里面的数据,调用它的函数

2)$children

他返回的是一个组件集合,如果你能清楚的知道子组件的顺序,你也可以使用下标来操作;

for(let i=0;i<this.$children.length;i++){
    console.log(this.$children[i].msg);输出子组件的msg数据;
 }

接下来就给一个长一点的deno

首先定义一个父组件:parentcomponent,

在父组件中我又是使用了两个自组件(假如有一百个自组件)[明确一点,组件只能有一个根节点],根节点是啥,我不知道。。。。。。

<template id="parentcomponent">
  <div >
    <p>this is a parent-component</p>
    <firstchild ref="f1"></firstchild>
    <secondchild ref="f2"></secondchild>
    <button @click='show_child_of_parents'>show child msg</button>
  </div>
</template>

 分别给出两个字组件的定义:(第2个使用的是template,第1个是script) 

<script type="text/x-template" id="childOne">
  <div>
    <p>this is first child</p>
   
    //使用stop阻止默认事件(vue的事件处理机制)
    <button @click.stop='getParent'>get parent msg</button>
  </div>
</script>

<template id="childSec">
  <div>
    <p>this is second child</p>
  </div>
</template>

组件模板定义好了,就是用:

1)挂在元素: 

<script>
  new Vue({
    el:"#app",
    data:{},
    components:{
      "parent-component":{
        template:'#parentcomponent', 
        data(){
          return{msg:'这是父组件中的内容'}          
        },
        methods:{
          show_child_of_parents(){
            //children方式访问自组件






 for(let i=0;i<this.$children.length;i++){
                console.log(this.$children[i].msg);
            }







 //通过$ref打标记,访问子组件 
            console.log(this.$refs.f1.msg);
 






this.$refs.f1.getParent();
          },                  
        },  





   
        components:{
          'firstchild':{
            template:'#childOne',
            data(){
              return {msg:'这是第一个子组件'};
            },
            methods:{
              getParent(){
                let a=1;
                console.log(a);
                alert(this.$parent.msg);
                
              }
            },
          },
          
          'secondchild':{
            template:'#childSec',
            data(){
              return {msg:"这是第二个组件"};
            }
          }
          
        }
                
      }
    }
    
  });

</script>

 2)使用父组件了

<body>
    <p><strong>可以通过$refs访问父组件的子组件</strong></p>
    <div id="app">
      <parent-component></parent-component>
    </div>
  </body>

值得注意的是vue2,相比vue1,丢弃了一些东西。。。。、https://3water.com/article/93467.htm

总结一下:

1)组件只能一个根节点

2)可以在自组件中使用this.$parent.属性值,或者函数

3)在父组件中可以使用this.$refs.组件的标记 访问子组件,或者this.$children[i].属性,,访问子组件的

 4)你需要注意this的指向

vue组件 $children,$refs,$parent的使用详解

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

Javascript 相关文章推荐
JS 强制设为首页的代码
Jan 31 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
Apr 18 Javascript
在jquery中的ajax方法怎样通过JSONP进行远程调用
Apr 04 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
Nov 30 Javascript
javascript多物体运动实现方法分析
Jan 08 Javascript
学习JavaScript设计模式之迭代器模式
Jan 19 Javascript
JS面向对象编程详解
Mar 06 Javascript
jQuery插件fullPage.js实现全屏滚动效果
Dec 02 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
echarts 使用formatter 修改鼠标悬浮事件信息操作
Jul 20 Javascript
vue 获取元素额外生成的data-v-xxx操作
Sep 09 Javascript
Nuxt.js的路由跳转操作(页面跳转nuxt-link)
Nov 06 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 #Javascript
Kindeditor单独调用多图上传实例
Jul 31 #Javascript
老生常谈ES6中的类
Jul 31 #Javascript
JS时间控制实现动态效果的实例讲解
Jul 31 #Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 #Javascript
深入理解Vue transition源码分析
Jul 30 #Javascript
使用travis-ci如何持续部署node.js应用详解
Jul 30 #Javascript
You might like
将OICQ数据转成MYSQL数据
2006/10/09 PHP
理解php Hash函数,增强密码安全
2011/02/25 PHP
在php和MySql中计算时间差的方法
2011/04/22 PHP
PHP中多维数组的foreach遍历示例
2014/06/13 PHP
叫你如何修改Nginx与PHP的文件上传大小限制
2014/09/10 PHP
Symfony数据校验方法实例分析
2015/01/26 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
基于jquery的页面划词搜索JS
2010/09/14 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
控制input输入框中提示信息的显示和隐藏的方法
2014/02/12 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
js 截取或者替换字符串中的数字实现方法
2016/06/13 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
AngularJS使用angular.bootstrap完成模块手动加载的方法分析
2017/01/19 Javascript
JavaScript实现替换字符串中最后一个字符的方法
2017/03/07 Javascript
JavaScript+Html5实现按钮复制文字到剪切板功能(手机网页兼容)
2017/03/30 Javascript
JS实现的走迷宫小游戏完整实例
2017/07/19 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
100行代码实现vue表单校验功能(小白自编)
2019/11/19 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
2020/05/31 Javascript
ant design vue datepicker日期选择器中文化操作
2020/10/28 Javascript
python之pandas用法大全
2018/03/13 Python
Python+PyQt5实现美剧爬虫可视工具的方法
2019/04/25 Python
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
大学生收银员求职信分享
2014/01/02 职场文书
优秀士兵先进事迹
2014/02/06 职场文书
计算机求职自荐信范文
2014/04/19 职场文书
社区创先争优承诺书
2014/08/30 职场文书
2015年民主生活会发言材料
2014/12/15 职场文书
关于拾金不昧的感谢信(五篇)
2019/10/18 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
nginx常用命令放入shell脚本详解
2021/03/31 Servers
如何用python清洗文件中的数据
2021/06/18 Python
SQL Server中的游标介绍
2022/05/20 SQL Server