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 相关文章推荐
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
Sep 26 Javascript
js限制文本框只能输入数字方法小结
Jun 16 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
Oct 09 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
Apr 05 Javascript
js的各种排序算法实现(总结)
Jul 23 Javascript
快速移动鼠标触发问题及解决方法(ECharts外部调用保存为图片操作及工作流接线mouseenter和mouseleave)
Aug 29 Javascript
JS实现图片预加载之无序预加载功能代码
May 12 Javascript
jQuery UI实现动画效果代码分享
Aug 19 jQuery
vue 指令之气泡提示效果的实现代码
Oct 18 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
Jul 19 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
JS实现横向轮播图(中级版)
Jan 18 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
PHP中数组的分组排序实例
2014/06/01 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP基于简单递归函数求一个数阶乘的方法示例
2017/04/26 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
jQuery 事件队列调整方法
2009/09/18 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
2013/04/22 Javascript
jQuery结合ajax实现动态加载文本内容
2015/05/19 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
使用Xcache缓存器加速PHP网站的配置方法
2017/04/22 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
jQuery实现模糊查询的方法分析
2018/05/10 jQuery
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
vue+canvas实现炫酷时钟效果的倒计时插件(已发布到npm的vue2插件,开箱即用)
2018/11/05 Javascript
layer更改皮肤的实现方法
2019/09/11 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
jQuery实现数字华容道小游戏(实例代码)
2020/01/16 jQuery
Python中使用PyHook监听鼠标和键盘事件实例
2014/07/18 Python
30分钟搭建Python的Flask框架并在上面编写第一个应用
2015/03/30 Python
Python+Opencv识别两张相似图片
2020/03/23 Python
Python3 操作符重载方法示例
2017/11/23 Python
python实现在IDLE中输入多行的方法
2018/04/19 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
OpenCV 使用imread()函数读取图片的六种正确姿势
2020/07/09 Python
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
explicit和implicit的含义
2012/11/15 面试题
毕业生毕业总结的自我评价范文
2013/11/02 职场文书
应届生英语教师求职信
2013/11/05 职场文书
甲方资料员岗位职责
2013/12/13 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
个人对照检查材料思想汇报
2014/09/26 职场文书
解约证明模板
2015/06/19 职场文书
医院见习总结
2015/06/24 职场文书
SpringBoot工程下使用OpenFeign的坑及解决
2021/07/02 Java/Android