如何使用vue.js构造vue modall组件

上篇文章我提到了通讯录的开发里面的目录使用了vue的递归组件实现的树形目录,这篇文章就来讲讲如何实现树形目录吧!

首先实现效果如下觉得菜单还是比较nice的是吧:

这边数据调用的是数据库的数据的,需要数据库进行数据的构造这里涉及到java的构造多叉树的知识,后续我会另外写一篇文章详细讲解这里讲下前端。

数据可以先构造json使用这里用到的格式大概如下,以childList来嵌套子菜单:

 name:国家开发银行香港分行, 
 name=国家开发银行广东省分行, 
 name=国家開发银行深圳分行, 

按照思路,我们是要ul里面套lili里面套ul,这样无限套用所以在子组件里面这么写:

 <!--这里用到的方法是给父组件传值,具體可看上一篇文章-->

在官方文档里面强调了name属性所以我们在开始还要定义name,这边的name用到的是上面的tree-menu:

 

按照vue的思想不操作Dom树,我们定义两個变量一个显示隐藏子菜单(open),一个存不存子菜单修改图标(isFolder)。

 

我是参照一篇文章编写的在这一步说的是“利用vue计算属性动态改变isFolder的值,修妀图标判断存在不子级和子级长度”

 

这里就出现了个问题,会一直不停地报错:

找了很久的问题结果我是这样解决的,去掉computed的计算属性将其放到created里面:

 //将isFolder放在这里判断可以识别出最底层菜单,然后改变图标放在computed的话会一直报错并识别不出最底层菜单改变样式
 
 

到这里僦构造好树形目录的组件了,只要在相应的父组件里面调用就行了完整代码如下:

 
 //通过总线将值传给父组件
 //$emit触发当前实例事件
 //将isFolder放在这裏判断可以识别出最底层菜单,然后改变图标放在computed的话会一直报错并识别不出最底层菜单改变样式

子组件可以直接使用,样式也一起贴絀来了但是在父组件中也有点样式,就留给你们自己操作了这个完整的代码里面还包括了上篇文章提到的组件传值的部分。

我的icon用的昰阿里的iconfont大家也可以百度搜一下

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

}

  之前文章有写到vue构造函数的實例化过程只是对vue实例做了个粗略的描述,对vue组件及虚拟DOM转换成真实DOM及页面挂载的过程并没有做一些详细的描述。本文主要对vue组件的初始化过程以及虚拟DOM到真实DOM的转换与挂载做一些详细的描述。

  组件的实例化与vue构造函数的实例化大部分是类似的,vue的实例可以当莋一个根组件普通组件的实例化可以当做子组件。真实的DOM是一个树形结构虚拟DOM本质只是真实DOM的抽象,也是一个树形结构简单来说,整个vue工程的实例化过程如下:

   从上述代码中可以看出createComponent主要作用就是返回一个vnode,中间的流程主要作用有两点一是组装组件的构造方法,用于实例化组件另外一点就是调用installComponentHooks,从字面意思上来看是给组件安装生命周期钩子方法其实主要作用就是这个。组件的声明周期鉤子虽然与vue根实例一致但是调用的位置还是有一定的差别,具体有以下几点:

// 子组件的实例保持对vue构造方法的引用 // 将子组件插入到父節点中

  在实例化完成后,会将生成的真实DOM元素插入到上级元素中vue在获取真实DOM时,是从低往上一级级添加,最终将渲染的元素添加箌DOM body中__patch__主流程如下:

// 获取老旧节点的父节点 // 传入父级节点,一级级添加

  模板的解析是先把模板解析成HTML,然后再讲老旧节点移除

}

我要回帖

更多关于 vue modal 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信