【Vue项目】三、去哪儿网APP——城市列表页面开发

使用router-link实现页面的跳转

<router-link to='/city'>
//点击后跳转的控件
</router-link>

注意:加了这个组件之后,需要重新设置字体颜色,因为组件中包含一个链接,链接本身设置了字体颜色。

使用Better-scroll第三方包实现拖动

  1. 首先,GitHub上搜索相关资源:better-scroll,了解相关内容。
  2. 安装better-scroll:npm install better-scroll --save
  3. 引入better-scroll:import Bscroll from 'better-scroll'
  4. 使用vue中的ref属性来获取DOM元素。
    在List.vue中,总组件需要有一个div包裹住其他的组件,并且在这个div上加上ref属性:
<div class="list" ref="wrapper">
  1. 使用mounted()函数,在页面DOM挂载完毕的时候,创建better-scroll实例属性,并将wrapper传进去:
mounted () {
   
    this.scroll = new Bscroll(this.$refs.wrapper, {
   click: true})
  }

注意:在使用better-scroll时,会使click事件失效
原因:better-scroll 默认会阻止浏览器的原生 click 事件。
因此,需要我们在创建实例属性时,将click属性设置为true。

使用axios实现页面数据的动态渲染

通过axios来动态获取数据,做法与前一部分的首页开发一样,不再赘述。

实现点击字母表某个字母,跳转到相应字母的城市列表项(兄弟组件间联动)

  1. 首先,要实现兄弟组件间的传值,则可以采取以下方法:
    (1)首先,将Alphabet.vue的letter值传递给父组件City.vue;
    (2)接着,父组件接收子组件Alphabet.vue传递过来的值,并将该值传递给子组件List.vue
  2. 在Alphabet.vue中,绑定click事件函数,在事件函数中,使用$e在这里插入代码片mit()函数触发父组件自定义事件,并将letter值传过去:
    (1)div上:@click="handleLetterClick"
    (2)事件函数:
handleLetterClick (e) {
   
      this.$emit('change', e.target.innerText)
    },
  1. 父组件City.vue中,在data中定义letter属性,并设值为空,在change事件所绑定的函数中,接收letter值,并设置为自定义的letter值,最后将自定义的letter值传递给子组件List.vue:
    (1)change事件绑定函数:
<city-alphabet :cities='cities' @change="handleLetterChange"></city-alphabet>

(2)data中定义letter值:

data () {
   
    return {
   
      letter: ''
    }
  },

(3)事件函数:

handleLetterChange (letter) {
   
      this.letter = letter
    }

(4)将自定义的letter值传递给子组件List.vue:

<city-list :hot='hotCities' :cities='cities' :letter="letter"></city
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值