<template>
<view>
<view @click="toggle">
123
<view v-if="flag && isTrue(card.number) && hasOwn(card.number)">123</view>
<view v-else-if="hasOwn(card.number)">456</view>
</view>
</view>
</template>
<script>
export default{
data() {
return {
flag: true,
card: {
number: [2]
}
}
},
methods: {
isTrue(item) {
return item.some(n => n > 1)
},
hasOwn(item) {
return item.length
},
toggle() {
this.$set(this.card, 'number', [1])
this.$nextTick(() => {
console.log(this.flag && this.isTrue(this.card.number) && this.hasOwn(this.card.number), this.hasOwn(this.card.number))
})
}
}
}
</script>
<style></style>
- 发布:2020-08-18 16:43
- 更新:2020-08-27 15:25
- 阅读:1185
产品分类: uniapp/小程序/阿里
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: macos catalina 10.15.6
HBuilderX类型: 正式
HBuilderX版本号: 2.8.6
第三方开发者工具版本号: 小程序开发者版本1.12.10 (1.12.10)
基础库版本号: 没关注
项目创建方式: HBuilderX
示例代码:
操作步骤:
无论怎么点击 走不到v-else-if 逻辑中
无论怎么点击 走不到v-else-if 逻辑中
预期结果:
可以依次切换
可以依次切换
实际结果:
有一处逻辑无法进入
有一处逻辑无法进入
bug描述:
模版渲染时使用v-if v-else-if判断时 出现的解析问题
查看渲染逻辑处发现此处走了两个m1 并没有m0
var render = function() {
var _vm = this
var _h = _vm.$createElement
var _c = _vm._self._c || _h
var m0 = _vm.isTrue(_vm.card.number)
var m1 = _vm.hasOwn(_vm.card.number)
var m2 = !(_vm.flag && m1 && m1) ? _vm.hasOwn(_vm.card.number) : null
_vm.$mp.data = Object.assign(
{},
{
$root: {
m0: m0,
m1: m1,
m2: m2
}
}
)
}
最佳回复
bug 确认,已加分,后续修复
-
1***@qq.com (作者)
目前版本又出现类似问题
<template>
<view>
<text v-if="flag && isTrue(card.number) && hasOwn(card.number)"></text>
</view>
</template>
编译为
var m0 = _vm.flag && vum.isTrue(card.number)
var m1 = card.m0 && _vm.hasOwn(card.number)
return {
m0: m0,
m1: m1
}2021-08-19 09:07
-
1***@qq.com (作者)
回复 DCloud_UNI_GSQ:
我新建了个bug 反馈 地址: https://ask.dcloud.net.cn/question/129122
xbuilder X 3.2.2.20210818
xbuilder X 3.1.13
这两个版本暂时都不可以2021-08-20 13:31