项目需求:在小程序端,根据后台返回的页面权限来控制页面中个别模块是否要展示
小编的解决方法:写一个自定义的组件,把页面写死的内容放在组件的插槽里,然后最后控制一些这个组件是否展示即可。
一,创建一个自定义的组件authorities_control
authorities_control下的wxml:
<slot></slot>是个占位,主要方便之后放一些写死的内容,
wx:if="{{showcontrol}}" 主要是控制该组件是否要显示
<!-- 权限的控制控件 -->
<view wx:if="{{showcontrol}}">
<slot></slot>
</view>
authorities_control下的js:
Component({
/**
* 组件的属性列表
*/
properties: {
//该值是从子组件中传过来的,主要是传这个控件的权限码,这个权限码后台会给到
authorites:{
type:String,
value:""
}
},
lifetimes:{
//该方法主要作用于页面一加载就执行下面的方法
attached: function(options){
this.delshowcontrol()
},
},
/**
* 组件的初始数据
*/
data: {
showcontrol:false, //初始值,默认是不展示的,
},
/**
* 组件的方法列表
*/
methods: {
delshowcontrol(){
//我的权限是登录的时候就存在本地缓存里
var authorities = wx.getStorageSync('authorities')
//取一下子组件传过来的权限码
var value = this.data.authorites
//然后做一个遍历,如果相等那就说明该权限存在,那就把showcontrol:true,让该组件展示出来
authorities.forEach(item=>{
for(var i in item){
if(item[i] === value){
this.setData({
showcontrol:true
})
}
}
})
},
}
})
二,子组件的页面
1,首先要在.json文件中引入我刚自定义的组件authorities_control
2,子组件使用自定义组件
组件传值,参数名:authorites,权限码:aaa
<authorities_control authorites="{{'aaa'}}">
<view>我是aa</view>
</authorities_control>
<authorities_control authorites="{{'bbb'}}">
<view>我是bbb</view>
</authorities_control>
以上是微信小程序开发时用到权限控制模块的展示的方法,希望我的方法能帮助得到大家,如果对你有用点个赞再走呗。如果有更好的方法也可以评论区分享给我,谢谢大家