hidden属性部分情况不能动态变化
发布于 6 年前 作者 xiuying44 11943 次浏览 来自 问答
  • 当前 Bug 的表现(可附上截图)
  1. wxml 使用 hidden="{{!array.length}}"

  2. js 中对 array 进行差量更新,无法触发 hidden 变化,只能全量更新

<view class="intro">
  <!-- hidden 仅在全量设置时会切换状态,差量追加不会触发 hidden 变化 -->
  <view hidden="{{!array.length}}">
    show
  </view>
  <view>
    array.length={{array.length}}
  </view>
  <button bindtap="clearArray">清空数组</button>
  <button bindtap="addItem">差量追加数组</button>
  <button bindtap="setArray">全量设置数组</button>
  <view wx:for="{{array}}">
    {{item}}
  </view>
</view>
const app = getApp()
 
Page({
  data: {
    array:[]
  },
  addItem(){
    const array = this.data.array
    this.setData({
      ['array['+array.length+']']:array.length
    })
  },
  setArray(){
    this.setData({
      array: [0,1,2,3,4,5]
    })
  },
  clearArray(){
    this.setData({
      array:[]
    })
  }
})
  • 预期表现

当对 array 差量更新时,hidden="{{!array.length}}" 可以正常变化

  • 复现路径

1.点击”差量追加数组“按钮,会向array 中追加一条数据,此时 hidden 属性判断未生效,仍是隐藏状态,应该是显示状态

2.点击”全量设置数组“按钮,会全量更新 array,此时 hidden 属性判断会生效,处于显示状态

3.点击”清空数组“按钮,会全量清除 array,,此时 hidden 属性判断会生效,处于显示状态,此时可以继续测试差量与全量的差异

  • 提供一个最简复现 Demo

https://developers.weixin.qq.com/s/yLfleHms7975

1 回复

这个是目前算法实现上导致的问题,已反馈给相关开发,但短期内应该无法修复,不是很容易修复的问题。

回到顶部