深入vue组件
1.组件的引入
在组件声明的驼峰式命名的标签,被渲染到HTML里时,会改成-小写的形式(2.0以下版本),命名的时候要以-小写的形式命名。
模板引入的另外一种形式,就是用is标签,把要写的标签引入
也可以动态引入 在is前面加:冒号,而且等于一个变量,这个变量要在data里声明
子父组件的传值
父组件,传值number给子组件
不可以驼峰命名 ,例如number-to-do,而不是numberToDo
props:[number],下面的图片里写错了
在父组件里变量名为number-to-do,在子组件里props变量声明时,也要number-to-do,在渲染的时候要改成驼峰式命名()。
props :
一种是数组,数组里时字符串,
另外一种是对象,
在父组件里引入的,number-to-do=‘78’,的话,在子组件里,props的声明对象就是
,
对象里套数组。
动态的属性传递
通过v-model绑定myVal,把myVal的值传递到com-a 标签里,要动态接收,使用:(v-bind),my-value 是动态地传递值得属性,my-value也需要在子组件里声明
子组件如何向外传递事件
在子组件里绑定一个click事件,在这个事件里触发emitMyEvent事件。
在父组件里,监听my-event事件,用v-on绑定,当子组件触发my-event时,执行getMyEvent事件
事件也不支持驼峰式命名。
插槽功能
也是父组件向子组件传值功能,传递的信息是模板,
在父组件里。模板内容是p标签,把p 插入com-a
在子组件里,通过slot实现功能
在子组件里
结果
父组件
以命名的slot指定不同部分的插入
组件之间的通信-动态组件
通过v-bind 绑定currentView变量,is属性,通过改变currentView,来改变标签
keep-alive是内置标签,起缓存的作用。
如果有很多currentView ,当切换的时候会记住上一个的内荣。
3中组件之间的交互方式 1.向组件里传递props 2.子组件触发一个事件3.插槽功能,这是vue,js 对外交互的三种模式
过度动画-css实现过度
点击按钮,p标签内容切换。如果给p 标签加上动画,切换会更加柔和,这就是vue的过度效果
引入transition组件,还要和特定的条件配合使用才可以起作用,比如和v-show一起使用。
vue的过度方式有2中,一种是css过度,一种是js
css实现过度
在接收过度效果元素的时候,vue的transiton组件会给这个元素,不同阶段,赋予不同的类名
我们通过控制css的类名来控制过度效果。通过以上4个类名来实现。
实现渐隐的效果,name等于fade,有了fade,给不同的阶段赋予不同的style样式
另外一种动画 my-trans
然后给my-trans的不同阶段添加样式
css实现过度效果
除了v-show接收过度效果意外,还有v-if,但是v-if消失后,在HTML里没有元素流
动态组件是如何接受transtion的?
首先要注册com-a和com-b
然后设置挂载点div,
is可以动态加载
设置currentView变量的值
toggleCom进行点击按钮,切换不同的com-a or com-b
通过mode来控制动画的展示顺序,默认是先进后出,影响美观,所以要改写mode=“out-in”
使用v-if和v-elase来进行多元素的过度
js控制动画
js控制的样式多一些,也分为动画阶段,与css不同的是,js 通过控制事件,例如v-on ,来监听事件钩子,当过度进行到特定的阶段,就会调用。
在绑定的过程中要注意的几个问题
1.在绑定的过程中,要绑定v-bind:css="false",这样避免transition去检查css中指定的选项,影响
2.方法里带有参数,主要通过el参数来实现的,,el指transition里的dom元素,ente和leave这两个方法比较特殊,有2个参数,done就是进入以后,调用done方法,enter和leave是函数体内所必须调用的。
实现,渐隐地从右边出去,渐先地从左边进入。
首先用到jquery里的animate,在最外层引入jquery.js,不会影响其他代码的执行
el指p标签里的东西
[email protected] v-bind去掉
自定义指令
v-on v-show 都是vue的内置指令
调用的时候要在标签里添加V-color指令
directives 和data和components一样,el指p dom元素,binding指变量,或表达式,是一个对象,这里指v-color,value是指接收到的指令,这里指red
把dirdctives写到new Vue 可对所有的color使用
自定义一个focus指令,直接获取input焦点
Vue高级功能-插件
vue-resource是http请求的插件
vue.cli