- 当前 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?