收藏
回答

wx:if 中使用 undefined 的 bug

问题模块
API和组件

wx:if 把 {{ undefined }} 、 {{ undefined !== undefined }} 、 {{ undefined != undefined }} 认为是 true


复现步骤如下:

<view wx:if="{{show}}">aaa</view>

这样一个 view 组件,如果在 js 代码里把 show 初始化成 undefined,那么这个组件在页面初始渲染时的确不会被渲染,然后在 js 代码中将 show 赋值为 true

this.setData({
    show: true
});

那么这个 view 组件会被渲染并显示,但接下来再将 show 赋值为 undefined

this.setData({
    show: undefined
});

此时这个view仍旧会显示。


把判断条件换成 undefined !== undefined 或 undefined != undefined 也是如上面一样的效果

<view wx:if="{{show !== undefined}}">aaa</view>



望尽快修复此bug

最后一次编辑于  2017-12-08  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

4 个回答

  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2017-12-11

    修正一下我3L的说法:应该说是没有在视图层中setData(只是在this.data中移除了而已)。

    2017-12-11
    赞同
    回复
  • 小程序技术专员-LastLeaf
    小程序技术专员-LastLeaf
    2017-12-11

    你好,如果你是直接设置 .setData({ something: undefined }) ,这个字段是被直接忽略的,没有被setData。这是客户端的限制,我们接下来会在编辑器中加一个强提示。

    2017-12-11
    赞同
    回复
  • 西赛德李
    西赛德李
    2017-12-09

    奇怪的是初始化时如果 show 就是 undefined,那么是正常的;后来用 setData 设置成 undefined 就没用。不知道是什么原因。

    2017-12-09
    赞同
    回复
  • 赵青山
    赵青山
    2017-12-09

    是bug,官方赶快修复啊,

    2017-12-09
    赞同
    回复