`

兄弟组件之间联动--vue开发app点击字母展示地区列表

 
阅读更多


 

下图这种地区搜索方式在很多app中都很常见,今天就使用vue框架中的 better-scroll 第三方包来实现页面滚动和点击侧边栏字母该字母开头的地区列表置顶功能。

来源:凯哥Java(kaigejava)

 

1、A子组件通过使用 this.$emit(事件名字,事件携带内容) 向外触发事件

首先,在<city-alphabet>组件每个字母元素上绑定事件,在该事件中向外触发事件,并将值传递出去:

 

<template>

    <ul class="list">

        <li class="item" 

        v-for="(item,key) in city" 

        :key="key"

        @click="handleLetterClick"

        >

        {{ key }}

        </li>

    </ul>

</template>

methods:{

    handleLetterClick(e){

        this.$emit('change',e.target.innerText)

    }

}

 

 

2、父组件接收A组件传过来的事件,并通过属性来向B组件传值

因为<city-alphabet>组件传递过来的是单个字符串,所以,先在data中定义一个属性letter来接收这个值;

联系凯哥-》凯哥Java(kaigejava)

或凯哥个人博客:www.kaigejava.com

悄悄说下,凯哥个人博客可以私信凯哥哦~

并在父组件模板中的<city-alphabet>组件中定义传递的方法@change="handleLetterChange"用来获取传递的值;

将letter属性传递给另一个子组件<city-list>;

 

<template>

    <div>

        <city-list 

        :city="cities" 

        :hot="hotCities"

        :letter="letter"

        ></city-list>

        <city-alphabet 

        :city="cities"

        @change="handleLetterChange"

        ></city-alphabet>

    </div>

</template>

data(){

    return{

        letter:''

    }

},

methods:{

    handleLetterChange(letter){

        this.letter = letter

    }

},

3、B组件接收父组件传递过来的属性,并通过watch监听参数的变化,然后执行页面的滚动显示

 

首先,给每个地址列表区域元素加 ref ,better-scroll会根据ref给指定区域进行操作;

然后使用watch监听letter变化,并使用better-scroll中的scrollToElement接口执行页面滚动;

<div class="area" 

v-for="(item,key) in city" 

:key="key"

:ref="key"

>

    ...

</div>

 

props:{

    letter:String

},

watch:{

    letter(){

        if(this.letter){

            // scrollToElement里只接受单个DOM元素,不接收数组

            //因为上面的div元素是数组渲染出来的,所以这里this.$refs得到的是数组

            const element = this.$refs[this.letter][0]

            this.scroll.scrollToElement(element)

        }

    }

}


 

 

 

 

分享到:
评论

相关推荐

    gulimall-admin-vue-app.zip

    【压缩包子文件的文件名称列表】"gulimall-admin-vue-app"是唯一的子文件夹名,这通常意味着压缩包解压后会有一个完整的项目结构,包括src(源代码)、public(公共资源)、package.json(项目配置文件)、....

    uni-preset-vue-master uniapp项目模板

    《uni-preset-vue-master:基于uni-app的高效开发模板详解》 在移动应用开发领域,uni-app作为一款跨平台的开发框架,以其强大的兼容性和灵活性受到广泛关注。uni-preset-vue-master则是一个专为uni-app量身定制的...

    uni-preset-vue模板

    【uni-preset-vue模板】是专为uni-app框架设计的一个预设模板,它简化了开发者在使用uni-app时的项目初始化过程,提供了基础的项目结构和配置,使得开发跨平台移动应用变得更加便捷。uni-app是由DCloud(即数字天堂...

    uni-app+Vue3+pinia+uview-plus搭建的项目包

    uni-app+Vue3+pinia+uview-plus搭建的项目包!uni-app+Vue3+pinia+uview-plus搭建的项目包!uni-app+Vue3+pinia+uview-plus搭建的项目包!uni-app+Vue3+pinia+uview-plus搭建的项目包!uni-app+Vue3+pinia+uview-...

    2019-06-21-vue-my-app.zip

    学习和理解这个Vue 2.6和Vue CLI 3.8.4的项目,开发者可以深入到Vue.js的组件化思想、响应式系统、路由管理(如vue-router)、状态管理(如Vuex)以及其他高级特性。同时,掌握Vue CLI的使用能够提升项目开发的效率...

    3D-flipbook-vue.zip

    在压缩包中的"flipbook-vue-master"文件夹中,我们可以期待找到以下内容: - `src` 文件夹:包含项目的源代码,可能有Vue组件、样式表(CSS/SCSS)、脚本(JS)和其他资源文件。 - `public` 文件夹:存放静态资源,...

    vue3-captcha(vue3行为验证码)

    Vue3是Vue.js框架的最新版本,它引入了许多性能优化和开发体验改进,包括Composition API、Suspense组件、Teleport等特性,使得构建复杂的前端应用更加高效和灵活。 Vue3-Captcha组件利用行为识别技术,要求用户...

    vue、datav、Echart 框架的大数据可视化(大屏展示)big-screen-vue-datav-master.zip

    在“big-screen-vue-datav-master”这个项目中,我们可以期待看到一个使用Vue.js和Datav构建的大型数据展示应用,其中可能包含多个ECharts图表组件。开发者可能已经预先封装好了一些常见的图表组件,通过调用这些...

    av-table是居于ant-design-vue(版本3.2.20) 的 a-table组件封装的虚拟列表组件.zip

    在这个场景中,我们关注的是 "av-table",这是一个针对 Ant Design Vue 的 a-table 组件进行封装的虚拟列表组件。 首先,让我们深入理解 Ant Design Vue 的 a-table 组件。a-table 是 Ant Design Vue 的核心组件之...

    Gin-Vue-Admin APP Go快速开发框架Gin-Vue-Admin Flutter Gin-Vue-Admin安卓

    Gin-Vue-Admin APP Go快速开发框架Gin-Vue-Admin 强大Go Web Gin开发项目移动端Flutter APP Gin-Vue-Admin Flutter Gin-Vue-Admin平台非常强大,让中小企业、外包项目快速能交付项目,有以下特点 简单易用 开箱即用 ...

    VUE使用 wx-open-launch-app 组件开发微信打开APP功能

    本文将详细介绍如何在使用Vue框架开发的微信H5页面中集成wx-open-launch-app组件,实现用户点击后通过微信浏览器打开相应的App的功能。这项技术能够让用户在不离开微信环境的情况下,直接打开手机上的App,大大增加...

    gulimall-admin-vue(完整代码)

    9. 压缩包子文件“gulimall-admin-vue-app”:这是项目的主要源代码文件,包含了Vue项目的结构和所有相关文件,包括Vue组件、样式、配置等,开发者可以通过解压并运行此文件来查看和运行项目。 总的来说,gulimall-...

    newbee-mall-vue-app:Vue2全家桶+ Vant建造大型单页面商城项目。新蜂商城前替代分离版本-前端Vue项目

    综上所述,“newbee-mall-vue-app”项目是一个集成了Vue2全家桶、Vant UI和Spring Boot的实战项目,涵盖了前端开发的诸多关键知识点,包括单页面应用架构、状态管理、组件化UI设计、前后端分离以及RESTful API设计。...

    基于vue-cli3 和 ant-design-vue搭建的后台管理系统模板

    Vue CLI 3是Vue.js官方提供的一个快速脚手架工具,它简化了项目的初始化和配置过程,而Ant Design Vue则是一个基于Vue.js的高质量前端组件库,灵感来源于Ant Design设计体系。 首先,让我们了解Vue CLI 3。Vue CLI ...

    big-screen-vue-master

    总的来说,"big-screen-vue-master"项目提供了一个基于Vue.js的大屏展示模板,通过熟练掌握Vue.js的组件化思想和相关数据可视化库,开发者可以快速构建出高效、灵活的数据展示平台,满足各类业务场景的需求。

    micro-app在vue-element-admin中的使用

    本资源是在基于micro-app在vue-element-admin中的搭建之后对micro-app在vue-element-admin中的使用进行的进一步研究。 主要包括:路由、页面之间的跳转、数据通信、样式隔离、元素隔离、资源共享、组件共享等的一些...

    ruoyi-vue-pro开发指南PDF下载

    ruoyi-vue-pro开发指南PDF下载 包含各种组件开发指南

    基于uni-app开发的跨平台移动端UI 组件库兼容App-Nvue、App-vue、小程序

    First UI 是一套基于uni-app开发的组件化、可复用、易扩展、低耦合的跨平台移动端UI 组件库。全面兼容App-Nvue、App-vue、小程序(微信、支付宝、百度、字节、QQ)、H5。文档地址:.zip

    CRUD 组件 _ ruoyi-vue-pro 开发指南.mhtml

    CRUD 组件 _ ruoyi-vue-pro 开发指南.mhtml

    图片动态绘制组件 vue2.x

    安装 yarn add vue-image-painter # 或 npm i -S vue-image-painter 引入 // main.js 入口中 import ImagePainter from 'vue-image-painter' Vue.use(ImagePainter) 使用,请参考Demo 源码

Global site tag (gtag.js) - Google Analytics