自定义v-model

下面的 **input**使用**:value**而不是**v-model**
下面的**change1****model.event**对应
下面的**text1**属性对应

  1. // parent
  2. <p>{{ name }}</p>
  3. <customModel v-model="name" />
  4. // child
  5. <input type="text" :value="text1" @input="$emit('change1', $event.target.value)" />
  6. <script>
  7. export default {
  8. model: {
  9. prop: 'text1',
  10. event: 'change1'
  11. },
  12. props: {
  13. text1: String
  14. }
  15. }
  16. </script>


$nextTick

  • vue是异步渲染的
  • data改变后,dom不会立刻改变
  • nextTick 是dom渲染完后再回调
  • 页面渲染会将data整合,多次修改data只会渲染一次

slot

  • 具名插槽
  • 作用域插槽 ```vue // 父 // 缩写 #default=”{user}” {{ user.firstName }}

// 子 {{ user.lastName }}

  1. > **父级模板里的所有内容都是在父级作用域中编译的;子模版里的所有内容都是在子作用域中编译的**
  2. <a name="nQQA9"></a>
  3. #### 动态组件
  4. 语法:`:is="componentName"`
  5. <a name="h2fjZ"></a>
  6. #### 异步组件(组件较大)
  7. 语法:`() =>``import``([文件名])`
  8. <a name="ZBTSb"></a>
  9. #### 缓存组件
  10. `keep-alive`
  11. <a name="lY2yh"></a>
  12. #### mixins
  13. 多个组件相同逻辑,抽离出来<br />问题:
  14. - 变量来源不明确,不利于阅读
  15. - mixin可能会造成命名冲突
  16. - mixin和组件可能出现多对多的关系,复杂度高
  17. <a name="DtGJS"></a>
  18. #### 自定义事件
  19. ```javascript
  20. import Vue from 'vue'
  21. export default new Vue()
  22. // event.$emit 和 event.$on