sonicsunsky
sonicsunsky
  • 发布:2020-03-29 16:16
  • 更新:2021-02-23 11:31
  • 阅读:5743

uni-app <view v-if="false">内部使用过滤器或methods方法会在小程序端控制台报错

分类:uni-app

如题 uni-app在view中加上v-if判断条件v-if="obj"后view内部使用过滤器会忽略判断外层容器条件v-if自动执行filter函数, 编译到小程序端后控制台报错 TypeError: Cannot read property 'xxx' of null, 然后不使用过滤器filters,使用页面methods函数的话也是同样的问题

初始数据对象obj为null,之后会调用api接口返回数据赋值给obj, 可是一进入页面之后小程序IDE控制台就会提示报错信息:TypeError: Cannot read property 'discount' of null

HBuilderX版本: 2.6.7.20200326-alpha最新版
小程序IDE版本: v1.02.2003250最新版

github上也有类似问题但是至今仍未解决,没有官方回复 > https://github.com/dcloudio/uni-app/issues/334

<view class="detail-card" v-if="obj">  
    <view class="discount">  
        <text>折扣:</text>  
        <text class="num">{{ obj.discount | formatDiscount }}</text>  
                <text class="num">{{ formatDiscount(obj.discount) }}</text>  
    </view>  
</view>  

data() {  
        return {  
            obj: null  
        }  
    },  
methods: {  
                formatDiscount(val){return Number(val).toFixed(2)},  
        async getMemberDetail() {  
            uni.showLoading({  
                title: '加载中...',  
                mask: true  
            })  

            const params = {  
                uid: this.uid  
            }  

            try {  
                const res = await Api.getMemberDetail(params)  

                console.log(res)  

                if (res.ret === 200) {  
                    uni.hideLoading()  

                    this.obj = Object.assign({}, res.data)  
                }  
            } catch (e) {  
                console.log(e)  
                uni.hideLoading()  
            }  
        }  
    }  
2020-03-29 16:16 负责人:无 分享
已邀请:
2***@qq.com

2***@qq.com

同样的问题 即使v-if为false 但是内部的方法过滤器依然会执行

9***@qq.com

9***@qq.com

我也碰到了。。。自我怀疑了半天,false的代码怎么回执行呢

2***@qq.com

2***@qq.com

我也遇到类似问题了,试了N种方法都不行,也不知道有没有人能回答下这个问题

1***@qq.com

1***@qq.com

应该是uniapp的一个bug,好长时间也没人管,目前我想到的是在获取数据时候来给他赋值,假如获取的是列表,获取到后先循环列表,判断v-if,如果不等于页面设定判断的值的话,给他赋值{},然后就可以了,要不让后端初始化的时候不要初始化null,初始化成{},我目前这样用是可以的

lmh_paul

lmh_paul

uni-app框架bug,vue这样的用法是不会报错的。把使用到的这个场景的代码片段抽成一个组件能解决,但很不优雅,希望官方能解决@官方

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