1. 使用组件时 ,使用 【v-model】 完成双向绑定html
①组件中要定义一个【value】值,也就是 props中有定义一个【value】属性,即传值vue
②在有新的value 时触发 input 事件,即写值 。app
2.使用组件时, 添加【ref 】属性,来指定一个索引名称异步
① 能够使用 this.$refs.索引名this
②$refs 只在组件渲染完成后才填充,而且它是非响应式的,它仅仅做为一个直接访问子组件的应急方案,应当避免在模板或计算属性中使用$refs双向绑定
3.递归组件code
在组件定义的时候,设置【name】后,就能够在组件模板内使用了,不过须要注意的是,必须给一个条件来限制递归的数量,不然会抛出错误:max stack size exceeded.component
4. 内联模板htm
使用组件时,给组件标签使用【 inline-template】 特性,组件就会把它的内容看成模板,而不是把它当内容分发。若是不是很是特殊的场景,建设不要轻易使用递归
5.动态组件
vue.js 提供了一个特殊的元素<component> 用来动态地挂载不一样的组件,使用is 特性一选择要挂载的组件
<div> <component :is="currentView"></component> </div> <script > new Vue({ components:{ comA:{ //组件1 template:'<div>aaa</div>' }, comB:{ //组件2 template:'<div>bbb</div>' } } data:{ currentView:'comA' //选择了组件 comA } }) </script>
6. $nextTick
若是咱们改变 数据,致视图发生了变化。这个过程当中Vue使用的是【异步更新队列】,即数据的修改,与视图的变化是异步的。Vue 在观察到数据变化时并非直接更新DOM,而是开户一个队列,并缓冲在同一事件循环中发生全部数据改变。在缓冲时会去除重复数据,从而避免没必要要的计算和DOM操做。
$nextTick就是用来知道何时DOM更新完成的。若是咱们使用popper.js 或 swiper 等可能要获取 DOM
<div> <div id="content" v-if="show"></div> </div> <script > new Vue({ data:{ show:false }, methods:{ myEvent:function(){ this.show = true; this.$nextTick(function(){ document.getElementById('div'); //若是没有放在 $nextTick 那么是获取不到的 }); } } }) </script>
7. 手动挂载实例 Vue.extend 和 $mount
Vue 提供了Vue.extend 和 $mount 两个方法来手动挂载一个实例
<div id="app"></div> <script > //例1: new Vue().$mount('app'); //例2: let myExtend = Vue.extend({ template:'...', data:{} }); new myExtend().$mount('app') //例3: let component = new myExtend().$mount(); document.getElementById("app").appendChild(component.$el); </script>