cqwcns 发表于 2021-12-8 13:56

web前端,根据JS数组做条件渲染的问题

web前端,我们常常要通过用户的权限来做页面元素的渲染,用户的权限一般是JS对象。
例如这样:
data : {
      power: { isAdmin: true, isStaff: true, isSuperStaff: true }
}

<view wx:if="{{power.isAdmin}}">管理员</view>
<view wx:if="{{power.isStaff}}">员工</view>
<view wx:if="{{power.isSuperStaff}}">超级员工</view>

以上代码是可以实现需求的,但我希望权限是一个数组而不是对象,例如这样:
data : {
power: [ 'isAdmin', 'isStaff', 'isSuperStaff' ]
}

问题来了,如果条件是数组,渲染代码应该怎么写?
我以为可以这样,但实际上不行:
<view wx:if="{{power.includes('isAdmin')}}">管理员</view>

冥门饿鬼 发表于 2021-12-8 14:08

是 权限里弄成一个数组? 然后没有权限的判断用!==includes() ? 是这个意思吗还是在权限里边判断是不是管理员账号?

明月策 发表于 2021-12-8 14:09

这个不是应该是对象才对嘛

xy308058 发表于 2021-12-8 14:17

外面套一层循环wx:for="{{power}}",循环里面写判断

gorkys 发表于 2021-12-8 14:18

这样是可以的吧。你再看看呢

塞北孤舟 发表于 2021-12-8 14:21

渲染时将权限数组循环处理,然后判断是否存在相应的权限

cqwcns 发表于 2021-12-8 14:31

gorkys 发表于 2021-12-8 14:18
这样是可以的吧。你再看看呢

控制台肯定可以,渲染不行。

cqwcns 发表于 2021-12-8 14:32

冥门饿鬼 发表于 2021-12-8 14:08
是 权限里弄成一个数组? 然后没有权限的判断用!==includes() ? 是这个意思吗还是在权限里边判断是 ...

就是判断数组有没有对应的关键字,如果有,就渲染,没有就渲染。

Yo丨Se7ven 发表于 2021-12-8 15:23

循环数组用 wx:for

魔幻冰扬 发表于 2021-12-8 15:58

wx:if="{{power.includes('isAdmin')}}"

根本原因在于,微信小程序模板语法,不支持复杂计算!!!垃圾的很。
页: [1] 2
查看完整版本: web前端,根据JS数组做条件渲染的问题