5***@qq.com
5***@qq.com
  • 发布:2022-03-31 10:44
  • 更新:2022-07-18 12:48
  • 阅读:574

【报Bug】v-if编译到小程序后的代码有bug

分类:uni-app

产品分类: uniapp/小程序/微信

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: -

HBuilderX类型: 正式

HBuilderX版本号: 3.3.13

第三方开发者工具版本号: 1.05.2201240

基础库版本号: 2.22.0

项目创建方式: HBuilderX

操作步骤:

见bug描述

预期结果:

v-if返回正确的结果

实际结果:

一直返回假

bug描述:

编译前代码:

<template v-if="isApproval">  
    <view  
        v-if="['Assign', 'Disposal', 'Closure'].includes(currentStage) && checkPermissions('xxx')"  
        slot="sourceId:append"  
        class="append"  
        @tap="handleEditToApproval"  
    >  
    </view>  
</template>

编译到小程序的wxml代码

<block wx:if="{{isApproval}}">  
  <block wx:if="{{$root.m0}}">  
    <view class="append data-v-9aab99b0" slot="sourceId:append" data-event-opts="{{[['tap',[['handleEditToApproval',['$event']]]]]}}" bindtap="__e"></view>  
  </block>  
</block>

编译到小程序的js代码

var render = function() {  
  var _vm = this  
  var _h = _vm.$createElement  
  var _c = _vm._self._c || _h  
  var g0 = [-1].includes(_vm.approvalStatus)  
  var g1 = _vm.isApproval  
    ? ["Assign", "Disposal", "Closure"].includes(_vm.currentStage)  
    : null  
  var m0 = _vm.isApproval ? _vm.$root.g1 && _vm.checkPermissions("xxx") : null  
...

注意最后一行的_vm.$root.g1,这个时候的g1还没有赋值给$root,所以会返回undefined,导致这个v-if会一直为假

2022-03-31 10:44 负责人:DCloud_UNI_GSQ 分享
已邀请:
DCloud_UNI_GSQ

DCloud_UNI_GSQ

问题确认,已加分,后续修复

DCloud_UNI_Anne

DCloud_UNI_Anne

HX 3.4.5+ 版本已修复此问题

该问题目前已经被锁定, 无法添加新回复