uniapp动态生成底部菜单

UNIAPP 自带的原生导航尽管流畅度非常好,但是在具体项目中有的时候需要动态设置以及特殊样式的 底部菜单 这个时候就需要自己去写一个自定义的底部tabbar

项目地址 fr_uni_app

1、比如需要特殊的图标 多出来一部分的

 

多出一部分的图标

2、根据登陆帐号的身份加载不同的tabbar

 

根据登陆帐号的身份加载不同的tabbar

动图预览

预览

解决方案

  • 将整个首屏4个页面作为组件加载进来 如 入口 index.vue
  • 将 自定义tabbar 写到 index.vue 中 或将其封装为组件 加载进来
  • 使用vuex 统一管理数据
  • 使用小程序自定义组件去解析HTML代码 (UNI的wxParse 看着麻烦 直接撸小程序自定义组件)

引入组件(页面)

引入组件(页面)

 

渲染首页数据

底部tabbar的切换及数据来源

只要控制 store中的 底部菜单数据 即可。页面中动态渲染

 

export default {
    state:{
        footer_nav:[
            {
                name:'首页',
                name_code:'home',
                icon:'/static/footer_icon/a2.png',
                select_icon:'/static/footer_icon/a1.png'
            },
            {
                name:'发布',
                name_code:'publish',
                icon:'/static/footer_icon/f2.png',
                select_icon:'/static/footer_icon/f1.png'
            },
            {
                name:'我的',
                name_code:'my',
                icon:'/static/footer_icon/d1.png',
                select_icon:'/static/footer_icon/d2.png'
            },
            
        ],
        now_page_index:0,
    },
    mutations:{
        change_page(state,index){
            state.now_page_index = index;
        }
    }
}

添加了自己常用的 request请求模块

 

//请求示例
            this.$ajax
                .get({
                    url: '/admin/get_product_list',
                    data: {
                        a: 1
                    }
                })
                .then(res => {
                    this.$alert('状态码:' + res.code);
                    console.log(res);
                });

添加了自己封装的 上传图片的 模块

 

//上传示例
            async choose_img_upload(n) {
                this.data_null()
                let uploader = new this.$Uploader();
                let path_arr = await uploader.choose_and_upload(n);
                console.log(path_arr);
                this.img_urls = path_arr;
                console.log(this.img_urls)
            },



作者:马码虎呼
链接:https://www.jianshu.com/p/8fda7e91ee2b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
uniapp是一种基于Vue.js框架的前端开发框架,它可以同时在各种平台上创建高性能的本地应用。在uniapp中,Page.json是一个非常重要的文件,它描述了页面的一些属性,例如页面的路径、页面的颜色和页面的文字样式等。在uniapp中,我们可以通过使用JavaScript动态生成Page.json文件,从而允许我们在完全运行时生成页面。 首先,我们需要在uniapp中定义一个全局的变量config,并将它注册到Vue.prototype上。在config中,我们可以定义一些默认的页面属性。例如: ``` var config = { pages: [ { path: 'pages/index/index', style: { navigationBarTitleText: '首页' } }, { path: 'pages/about/about', style: { navigationBarTitleText: '关于我们' } } ] } Vue.prototype.$config = config; ``` 然后,我们就可以在我们的Vue组件中使用这个全局变量了。我们可以通过在mounted中动态生成Page.json文件。 ``` module.exports = { mounted() { var pages = this.$config.pages; var jsonStr = JSON.stringify({ "pages": pages }); uni.writeFile({ filePath: 'pages.json', data: jsonStr, success() { console.log('生成页面json成功') }, fail(e) { console.log('生成页面json失败', e) } }); }, } ``` 在上面的代码中,我们首先获取了我们定义的config的pages属性。然后,我们将这个pages转换为JSON格式并将其写入到pages.json文件中。如果生成pages.json文件成功,则会打印“生成页面json成功”,否则会打印“生成页面json失败”。 通过上述方法,我们可以成功地动态生成Page.json文件,并且可以在完全运行时动态生成页面。当用户访问某个页面时,uniapp会根据Page.json文件创建并渲染对应的页面。我们可以通过动态生成的Page.json来改变页面的一些样式和属性,从而实现更加丰富和灵活的页面设计。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值