用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,登录网站

小程序社区 首页 教程 实战教程 查看内容

微信小程序使用自定义组件导航实现当前页面高亮

Rolan 2020-1-2 00:18

最近开发小程序,需要做一个导航,导航可以通过template写出来,但是这个项目需要在导航中处理一些逻辑,做成组件更方便些。首先新建header文件夹,里面新建对应的js、json、wxml、wxss文件。!-- 公共头部组件 -- vi ...

最近开发小程序,需要做一个导航,导航可以通过template写出来,但是这个项目需要在导航中处理一些逻辑,做成组件更方便些。


首先新建header文件夹,里面新建对应的js、json、wxml、wxss文件。

<!-- 公共头部组件 -->
<view class='headers'>
     <navigator open-type="redirectTo" class='logo' url="../index/index" hover-class="none">
        <image src="../../assets/img/logo2.png" mode="widthFix"></image>
     </navigator>
    <view class="phone_nav_switch" bindtap="controlNav">
        <view class="iconfont icon-daohang" hidden="{{navIsShow}}"></view>
        <view class="iconfont icon-guanbi" hidden="{{!navIsShow}}"></view>
    </view>
    <view class="nav">
        <view class="shadow {{navIsShow ? 'active':''}}" bindtap="controlNav"></view>
        <view class="bg {{navIsShow ? 'active':''}}">
            <view class='con' wx:for="{{navs}}" wx:key="item.url">
                 <navigator open-type="redirect" data-index="{{index}}" class="{{index === navActive ? 'active' : ''}}" url="{{item.url}}" hover-class="none">
                    {{item.text}}
                 </navigator>
            </view>
        </view>
    </view>
    <!-- 返回顶部 -->
    <view class="backTop" bindtap="goTop" hidden='{{floorstatus}}'>
        <text class="icon iconfont icon-iconfonticontrianglecopy"></text>
    </view>

</view>

header.js里的导航数据

/**
   * 组件的属性列表
   */
  properties: {
    // 当前导航高亮
    navActive: {
      // 类型
      type: Number,
      // 默认值
      value: 0
    }
  },

  data: { 
    // 导航开关 
    navIsShow: false,
    currentIndexNav: 0,
    // floorstatus: false,
    navs: [
      {
        text: '网站首页',
        url: '../index/index'
      },
      {
        text: '招商加盟',
        url: '../join/join'
      },
      {
        text: '关于煮田',
        url: '../about/about'
      },
      {
        text: '煮田美食',
        url: '../food/food'
      },
      {
        text: '最新资讯',
        url: '../news/news'
      },
      {
        text: '门店查询',
        url: '../search/search'
      },
      {
        text: '联系我们',
        url: '../contact/contact'
      },
      {
        text: '视频列表',
        url: '../videoItem/videoItem'
      }

    ]
  },

导航放在class="nav"中,header.json文件中写入

{
  "component": true
}

需要引入组件的页面的json文件写入,比如index.json

{
  "component": true,
  "usingComponents": {
    "header":"../header/header"
  }
}

然后在index.wxml引入组件,navActive是传给组件的值,目的是为了对应导航组件内的导航每一项的index,比如首页的index为0,那我在首页内定义的navActive就是0,

<!-- 头部组件 -->
    <view class='header'> 
        <!-- 导航高亮传值 -->
         <header navActive='0'></header>
    </view>

如果相等当前页面就会高亮

需要在在heaer.js设置navActive的类型,通过上面的操作,我是能够实现当前页面导航高亮的

希望能帮到需要的人,如果觉得我上面写的不清楚的话,这是我的github

https://github.com/mazixiao/w...

,这个是我做好了的

鲜花
鲜花
鸡蛋
鸡蛋
分享至 : QQ空间
收藏
原作者: 我的一个道姑朋友 来自: segmentfault