Vue嵌套组件传参
.btn_group{填充:20px10px;background-color:rgba(87,129,189,0.13);}本文以一个Vue递归组件为例,探讨多层嵌套后无法触发事件的问题。大家可以查看Demo,快速理解这个例子。假设我们已经知道Vue组件通常有父子组件通信和兄弟组件通信。父子组件通信非常简单。父组件会通过props将数据向下传递给子组件。当子组件有事情要告诉父组件时,它会通过$emit事件告诉父组件。那么当两个组件之间没有父子关系时,如何传递数据呢?先来看这个例子:递归嵌套组件传参我们封装了一个名为NestedDir(嵌套目录的意思)的子组件,内容如下(使用了元素ui组件):{{el.name}}
添加目录添加新文件
{{el.name}}
可以看出这个NestedDir从parent接收到嵌套数组类型的数据,其内部点击添加新的目录和文件可以触发parent级别监听的变化事件比较特殊的是这个组件调用了自己:
但是需要注意的是,我们调用自己的时候,是notin是从里面监听change事件的,这也是为什么在二级目录下点击新建按钮无效的原因。我们传递给它的嵌套数据结构如下所示:[{"id":1,"name":"Directory1","type":"dir","children":[{"id":2,"name":"Directory3","type":"dir","children":[],"pid":1},{"id":3,"name":"File2","type":"file","pid":1}]},{"id":4,"name":"Directory2","type":"dir","children":[]},{"id":5、"name":"File1","type":"file","children":[]}]在父组件中调用NestedDir:
添加目录添加新文件
取消确定