vue组件之自定义v-model (子组件触发父组件图书分页)

这一节我们使用自定义的v-model实现 子组件触发父组件更新
首先我们复习下v-model
在booklist.vue文件里加入测试代码


image.png

使v-model的值为当前页码值进行双向绑定
这时我在输入框中改变页码值 想应的数据也会跟着变化
效果如下


image.png

我在输入框中输入3
表示第三页
image.png

是因为我们改变了当前页码值currentPage(是vue实例对象中data里面的数据)改变data里面数据 会触发组件的重新渲染

实际上v-model是v-bind:value 和 v-on:input 事件的语法糖
我们可以写成下面的方式


image.png

v-model里面默认绑定的是value值和input事件
效果和上面一模一样
下面我们看下如何用自定义v-model实现子组件触发父组件更新
首先在父组件里面的pagebar组件上 写入v-model属性 把currentPage传入子组件
代码如下
image.png

那么子组件如何获取呢?
在父组件里面的子组件pagabar上面写入v-model会自动将value值和input事件传入子组件
只需在子组件的props属性里面加入value值即可
然后还是用emit方法触发父组件更新 只不过事件名 为v-model的input
如下
image.png

image.png

运行结果


image.png

点击图书进行分页了 并且页码值出现在下面的输入框内
以上就是在组件里面使用v-model实现子组件触发父组件更新方法 原理和原生组件是一样的
但是上面的代码有些别扭 比如说v-model默认传入给子组件的value值和input事件名
我们还可以改写这两个名字 让我们自定义名字
在vue2.2版本后提出的
写法如下
增加一个model属性在里面加入prop和event分别 表示替代value和input事件的名字
image.png

这样看起来我们的代码看起来不别扭
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,270评论 0 25
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,075评论 0 29
  • 主要还是自己看的,所有内容来自官方文档。 介绍 Vue.js 是什么 Vue (读音 /vjuː/,类似于 vie...
    Leonzai阅读 3,375评论 0 25
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 3,377评论 0 3
  • 组件(Component)是Vue.js最核心的功能,也是整个架构设计最精彩的地方,当然也是最难掌握的。...
    六个周阅读 5,652评论 0 32