前端流行框架Vue3教程:16. 组件事件配合`v-model`使用

boyanx1天前技术教程3

组件事件配合v-model使用

如果是用户输入,我们希望在获取数据的同时发送数据配合v-model 来使用,帮助理解组件间的通信和数据绑定。


第一步:创建子组件(SearchComponent.vue)

这个组件用于处理用户的搜索输入,并将输入值传递给父组件。

功能说明:

  1. 数据属性 search:在 [data()]中定义了一个名为 search 的数据属性,作为输入框的双向绑定。
  2. 使用 v-model:模板中的 <input type="text" v-model="search"> 实现了用户输入与 search 数据的同步。
  3. 监听器 [watch]:当 search 发生变化时,通过 $emit 触发一个名为 searchEvent 的自定义事件,并传入新的值。
  4. 输出事件 searchEvent:该事件允许父组件订阅并接收子组件的数据更新。

代码结构:

<script>
import SearchComponent from './SearchComponent.vue'

export default {
  components: {
    SearchComponent
  },
  data() {
    return {
      search: ''
    }
  },
  methods: {
    getSearch(data) {
      this.search = data
    }
  }
}
</script>

<template>
  <h3>Main</h3>
  <p>搜索内容 {{ search }}</p>
  <SearchComponent @searchEvent="getSearch"/>
</template>

第二步:创建主组件(Main.vue)

这个组件负责显示来自子组件的数据,并展示到页面上。

功能说明:

  1. 引入子组件:使用 import SearchComponent from './SearchComponent.vue' 引入子组件。
  2. 注册组件:在 [components]属性中注册 SearchComponent
  3. 数据属性 search:用来保存从子组件接收到的搜索内容。
  4. 方法 getSearch(data):响应子组件发出的 searchEvent 事件,将数据赋值给 this.search
  5. 模板渲染:使用插值表达式 {{ search }} 显示当前搜索内容,并通过 @searchEvent="getSearch" 监听子组件的事件。

代码结构:

<script>
import SearchComponent from './SearchComponent.vue'

export default {
  components: {
    SearchComponent
  },
  data() {
    return {
      search: ''
    }
  },
  methods: {
    getSearch(data) {
      this.search = data
    }
  }
}
</script>

<template>
  <h3>Main</h3>
  <p>搜索内容 {{ search }}</p>
  <SearchComponent @searchEvent="getSearch"/>
</template>

第三步:运行项目

确保你的项目结构如下:

src/
├── components/
│   ├── SearchComponent.vue
│   └── Main.vue
├── App.vue
└── main.js

修改 [App.vue]:

template>
  <Main />
</template>

<script>
import Main from './components/Main.vue'

export default {
  components: {
    Main
  }
}
</script>

然后启动项目:

npm run dev

访问 localhost:端口,你应该能看到一个搜索框和下方显示的搜索内容。


总结

  • 父子组件通信:通过 $emit 在子组件中发送事件,在父组件中监听并处理。
  • 数据绑定v-model 简化了表单元素与数据之间的双向绑定。
  • 模块化开发:将功能拆分为多个组件,提高可维护性和复用性。

相关文章

前端大文件切片上传,断点续传、秒传等解决方案,VUE中使用实例

前端大文件切片上传,断点续传、秒传等解决方案,VUE中使用实例,NGINX支持超大文件HTTP断点续传,VUE实现文件的分片上传,前端大文件上传处理方案,如何解决控件附件上传时超大附件无法上传的问题,...

fastapi+vue3文件上传(vuetify文件上传)

最近构思实现了一个小demo网站,前端上传文件,后端分析文件,最后前端展示,整个过程还是蛮有意思的,刚刚开始学习网站开发,还有很多不会的地方,这里演示fastapi+vue3文件上传,上传的excel...

Vue3 流程图组件库 :Vue Flow(vuex流程图)

Vue Flow 是一个轻量级的 Vue 3 组件库,它允许开发者以简洁直观的方式创建动态流程图。本篇文章记录一下Vue Flow的基本用法安装npm add @vue-flow/core 流程图的构...

Vue进阶(幺伍肆):vue-resource(vue-resource.js)

前言vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应。也就是说,$.ajax能做的事情,vue-resource插件一样也能做到,...

Vue3.0权限管理实现流程【实践】(vue权限管理如何实现)

作者:lxcan转发链接:https://segmentfault.com/a/1190000022431839一、整体思路后端返回用户权限,前端根据用户权限处理得到左侧菜单;所有路由在前端定义好,根...

vue + webSocket 实时任务信息通知

vue + webSocket 实时任务信息通知websocketWebSocket 协议在2008年诞生,2011年成为国际标准。所有浏览器都已经支持了。它的最大特点就是,服务器可以主动向客户端推送...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。