vue 的 solt 子组件过滤

如上图:
1、定义了一个类似下拉的组件 mySelect , 然后里面有自定义的组件 myOptions
2、有很多时候,我们希望, mySelect 组件内部的子组件,只能是 myOptions 。 不应该有 <div>666</div>
3、在mySelect 里面做一层过滤,去掉不需要的组件
下面先看看
myOptions.vue 组件代码
<template>
<div class="options">
<div>这里是 options</div>
</div>
</template> <script>
// @ is an alias to /src
export default {
name: 'myoptions',
data(){
return {}
},
created(){ },
mounted(){ }
}
</script>
接下来是 mySelect 的代码:
<template>
<div class="select">
<div>这里是 Select</div>
<slot></slot>
</div>
</template> <script>
// @ is an alias to /src export default {
name: "myselect",
data(){
return {
_children:[]
}
},
created(){
console.log(this.$children) // 输出为 []
console.log(this.$slots.default) //输出为 [VNode, VNode, VNode]
var arr = this.$slots.default || []
var res = [];
for(var i = 0; i < arr.length; i++){
var item = arr[i];
if(item.componentOptions && item.componentOptions.tag == "myOptions"){
res.push(item);
}
}
this._children = res;
this.$slots.default = res;
},
mounted(){
console.log(this.$slots.default) //[VNode, VNode]
console.log(this.$children)//因为过滤掉了一个,所以为 [VueComponent, VueComponent]
}
}
</script>
在 mySelect 的 created 和 mounted 里面,分别查看
this.$slots.default和 this.$children
就会发现内部的子组件渲染,与这个有很大关系,只需要过滤一下 slots 就可以了
vue 的 solt 子组件过滤的更多相关文章
- vue 父向子组件传递数据,子组件向父组件传递数据方式
父组件向子组件传递数据通过props,子组件引入到父组件中,设置一个值等于父组件的数据,通过:bind将数据传到子组件中,子组件中通过props接收父组件的数据,这样就可以使用父组件的数据了,循环组件 ...
- vue中修改子组件样式
一.问题叙述 项目里需要新添加一个表单页面,里面就只是几个select,这个几个select是原本封装好的组件,有自己原本的样式,而这次的原型图却没有和之前的样式统一起来,需要微调一下,这里就涉及到父 ...
- vue 实现,子组件向父组件 传递数据
首先理清组件之间的关系 组件与组件之间,还存在着不同的关系.父子关系与兄弟关系(不是父子的都暂称为兄弟吧). 父子组件 父子关系即是组件 A 在它的模板中使用了组件 B,那么组件 A 就是父组件,组件 ...
- Vue基础:子组件抽取与父子组件通信
在工作中承担一部分前端工作,主要使用Vue + Element UI. 随着版本迭代,需求增加,页面往往变得更加臃肿,不易维护.学习子组件的封装和抽取,能更好适应需求. 为什么需要子组件 可复用 将重 ...
- Vue如何更新子组件
黑科技: 给子组件绑定一个key值,当key值改变时,子组件就会更新 ~
- vue通俗易懂的子组件向父组件传值
不多BB直接上图: 如上图:为子组件绑定点击事件 如上图:send方法触发父组件绑定的事件 如上图:为父组件绑定触发事件@myEvent="aa" aa方法接受子组件传过来的值
- vue的在子组件在使用iview库发现的问题
正常调用没有问题 当写到子组件的时候 这样调用就出问题了 以下是写到子组件出的问题 解决方法 改成了两行写就不会报错了
- Vue 中的 子组件 给 父组件 传值
子组件的某一个事件(sendData)内部,通过this.$emit('事件名', 传递的值)传递数据父组件在调用子组件的地方,绑定了子组件自定义的 事件名(change-data) 定义父组件的地方 ...
- vue自定义事件 子组件把数据传出去
每个 Vue 实例都实现了事件接口(Events interface),即: 使用 $on(eventName) 监听事件 使用 $emit(eventName) 触发事件 1.使用v-on绑定自定义 ...
随机推荐
- Windows环境下最新OpenCV和Contribute代码的联合编译【20190505更新红字】
解决这个问题,目的在于获得并使用最新的完全版本的代码,主要方法是对CMake能够熟练使用,并且对编译等基础支持有所了解. 因为这篇博客经过多次修改,所以里面的内容和配图可能有不是完全比对的地方,但是只 ...
- Vue实现图片预加载
<script>export default { data () { return { count: 0, } }, mounted: function() { this.preload( ...
- Mac 打开、编辑 .bash_profile 文件
export PATH=${PATH}:/Users/loaderman/Library/Android/sdk/platform-tools export PATH=${PATH}:/Users/l ...
- Python3基础 print 格式化输出 %f %d 保留浮点数的位数 整数的位数不够零来凑
Python : 3.7.3 OS : Ubuntu 18.04.2 LTS IDE : pycharm-community-2019.1.3 ...
- 001——Typescript 介绍 、Typescript 安 装、Typescript 开发工具
一. Typescript 介绍 1. TypeScript 是由微软开发的一款开源的编程语言. 4. TypeScript 是 Javascript 的超级,遵循最新的 ES6.Es5 规范.Typ ...
- Python初级 3 基本数学运算
一. 四大基本运算操作符 1 加+ print(3 + 2) 2 减- print(3 - 2) 3 乘:* print(3 * 2) 4 除/, // print(3 / 2) print(3 // ...
- Delphi 调用控件的过程,初学者都想知道
假设有过程: procedure TForm1.Button1Click(Sender: TObject);begin ShowMessage('唐细刚 2008');end; 想在 FormC ...
- centos 7 修改计算机名
[root@centos7 ~]$ hostnamectl set-hostname test.xyz.com # 使用这个命令会立即生效且重启也生效 [root@centos7 ~]$ host ...
- AI佳作解读系列(六) - 生成对抗网络(GAN)综述精华
注:本文来自机器之心的PaperWeekly系列:万字综述之生成对抗网络(GAN),如有侵权,请联系删除,谢谢! 前阵子学习 GAN 的过程发现现在的 GAN 综述文章大都是 2016 年 Ian G ...
- 超详细的Tensorflow模型的保存和加载(理论与实战详解)
1.Tensorflow的模型到底是什么样的? Tensorflow模型主要包含网络的设计(图)和训练好的各参数的值等.所以,Tensorflow模型有两个主要的文件: a) Meta graph: ...