收藏
回答

Component里的Boolean类型的Property取值异常

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug 自定义Component 客户端 1.02.1810250 2.04

- 当前 Bug 的表现(可附上截图)

自定义Component时,数据类型为Boolean的property,无法在js中获取到正确的属性值。无论页面里设置的是false还是true,js中获取到的始终为true。


- 预期表现

当Component在页面内时,对属性进行赋值或者数据绑定后,应该在js中可以获取到正确的属性值。如设置为'false'时,应该在js里获取到的也是false(布尔值),设置为'true'时,获取到的也应该是true(布尔值)。


- 复现路径

创建一个自定义Component,设置一个数据类型为Boolean的property,然后创建一个测试页面,将自定义的Component放在页面内,然后给之前定义的property设置属性为'false',然后在js里跟踪获取到的property属性值。


- 提供一个最简复现 Demo

Component({

properties: {

     clickable: {

        type: Boolean,

        value: false,

        observer: function(newVal, oldVal) {

            this.getClickable(newVal);

    }

   }

},

methods: {

    getClickable: function(e) {

        var me = this;

        var propValue = me.properties.clickable;

        console.log(propValue);  //此处可以跟踪到WMXL页面里设置的property的数值,始终为true,无论WMXL里设置的是什么

    }

},

})



Component页面

<view>

    <button bindtap = 'getClickable'>Test</button>

</view>


测试页面

<view>

    <mycomponent clickable = 'false'></mycomponent>

</view>


------------------------------以下将property的数据类型换成String,问题消失---------------------------------------------

clickable: {

    type: String,

    value: 'false',

}

其他部分均保持不变,在点击时,能获取到字符串'false'

而将册似乎页面的 clickable='false'改成 clickable='true'或者甚至改成clickable='any other value',都能跟踪到获取的值均没问题。


所以,是否为Boolean时,存在bug?


回答关注问题邀请回答
收藏

2 个回答

  • 2019-05-19

    有没有解决兄弟

    2019-05-19
    有用
    回复 1
    • 2019-05-19

      传递值得时候false 要写成 {{false}} 才可以

      2019-05-19
      回复
  • Hasaki
    Hasaki
    2018-11-12

    大家跳转小程序的时候有没有遇到过这个问题啊?navigateToMiniProgramAppIdList

    2018-11-12
    有用
    回复 1
    • 优质山贼
      优质山贼
      2018-11-12

       我也不知道是怎么回事,始终获取到的就是true,无论WMXL里设置的是什么值。

      你上面写的复现方式,你能复现吗?很简单的两个页面就复现了。


      刚刚又试了以下,依然还是这样。

      2018-11-12
      回复
登录 后发表内容