<view>
<button :disabled="selected.length === 0">{{selected.length}}</button>
<button @click="toggle">toggle</button>
</view>
</template>
<script>
export default {
data() {
return {
cart: [{ selected: false }],
};
},
methods: {
toggle() {
this.cart[0].selected = !this.cart[0].selected;
},
},
computed: {
selected() {
return this.cart.filter(c => c.selected);
},
},
}
</script>
- 发布:2022-12-29 16:23
- 更新:2022-12-30 15:52
- 阅读:843
产品分类: uniapp/小程序/微信
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 10.15.7
HBuilderX类型: 正式
HBuilderX版本号: 3.6.15
第三方开发者工具版本号: 1.06.2212011
基础库版本号: 2.29.0
项目创建方式: HBuilderX
示例代码:
操作步骤:
点击 toggle 按钮
点击 toggle 按钮
预期结果:
第一个 button 的 disabled 属性发生切换
第一个 button 的 disabled 属性发生切换
实际结果:
第一个 button 的 disabled 属性不会有任何变化
第一个 button 的 disabled 属性不会有任何变化
bug描述:
如果 computed 属性直接返回 boolean 类型的值,元素属性会发生相应变化。
<button :disabled="selected">{{selected.length}}</button>
computed: {
selected() {
return this.cart.filter(c => c.selected).length === 0;
},
},
但如果是在元素属性上间接设置一个返回 boolean 的语句,就无效了。
<button :disabled="selected.length === 0">{{selected.length}}</button>
computed: {
selected() {
return this.cart.filter(c => c.selected);
},
},
1 个回复
DCloud_UNI_GSQ
由于微信小程序有这样一个bug(多年前已经反馈给微信小程序团队确认):数组length无法观测
由于微信小程序多年未处理,后续框架将统一自动包装一下。
目前可以手动改变写法绕一下: