起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1792|回复: 4

[处理中5] toggle组件使用代码控制checked属性时有异常情况

[复制链接]

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
发表于 2018-4-16 16:25:38 | 显示全部楼层 |阅读模式
本帖最后由 carbinechun 于 2018-4-16 17:04 编辑

具体异常情况如下:我把toggle当作指纹功能的开关在业务处理中,默认关闭的状态,点击toggle时会弹出是否开启的确认对话框,如果点否就不开启,也就是说toggle的checked属性值不变,第一次点击确认对话框的否的时候toggle显示的正常,但如果继续第二次点击打开确认对话框,再次点否的话toggle的ckecked属性的值就会变成true,不知道具体是什么原因。
我打开toggle的demo试了一下,有类似的情况出现:在“通过其他组件控制toggle的状态”button组件上面的toggle组件,直接点击的话会正常显示value的值是true或false,交替出现都正常;在点几次toggle后,如果点击button来控制toggle状态,也会对应显示,连续点button的话toggle状态关联显示正常,但如果在点button几次后如果再点一下toggle,再点button的话就无法正常控制toggle的状态了,想要控制的话在点button的过程中如果点了toggle,那就要连续点两次(或4次,应该是2的位数)toggle才可以,如果只点一次的话不能正常显示。跟踪了下设置语句执行前后toggle的checked值未变化

两个调试都是在本机和apploader里进行的,两种环境情况相同,不确定这属于bug还是调试的环境什么的有没有影响
补充说明一下,出现异常情况的是通过代码来设置toggle的checked属性,具体代码如下
  1. var toggleObj = this.comp("toggleVal");
  2. toggleObj.get('checked') ? toggleObj.set({
  3.     'checked' : null
  4. })  : toggleObj.set({
  5.     'checked' : 'true'
  6. });
复制代码



如果我把判断的条件取值改成用toggle.val(),设置值的时候也是用toggle.val(value)这种形式的话,就不会有显示异常的情况了,实际代码如下

  1. var toggleObj = this.comp("toggleVal");
  2. toggleObj.val() ? toggleObj.val(false) : toggleObj.val(true);
复制代码




传说中路过
发表于 2018-4-16 17:36:01 | 显示全部楼层
本地测试案例
/UI2/system/components/justep/button/demo/toggle.w
用浏览器测试的,点按钮和 组件切换,并没有冲突的

你能说下如何稳定重现吗??比如: 先点哪儿几次?再点哪儿几次?能稳定重现呢?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
 楼主| 发表于 2018-4-19 16:37:41 | 显示全部楼层
liangyongfei 发表于 2018-4-16 17:36
本地测试案例
/UI2/system/components/justep/button/demo/toggle.w
用浏览器测试的,点按钮和 组件切换, ...

页面加载完成后,toggle event下面的toggle是开启的状态,这时候随便点下边的button,点几下都可以,toggle状态正常变化,然后点一下toggle,再点button的时候toggle就不变化了
传说中路过
回复 支持 反对

使用道具 举报

发表于 2018-4-19 17:58:56 | 显示全部楼层
carbinechun 发表于 2018-4-19 16:37
页面加载完成后,toggle event下面的toggle是开启的状态,这时候随便点下边的button,点几下都可以,togg ...

确实是这样的
这样吧,你不要通过
toggleObj.set({
                        'checked' : null
                })
去设置了

建议还是都通过修改data组件字段的值去实现吧!
toggle 值需要绑定data就可以了,一切都通过修改data数据实现

你好楼主,您反馈的这个现象通过验证是产品缺陷,我们已提交到产品组(内部编号:2018041900001),感谢楼主的支持与配合。
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

97

主题

580

帖子

1359

积分

金牌会员

Rank: 6Rank: 6

积分
1359
QQ
 楼主| 发表于 2018-4-20 09:43:06 | 显示全部楼层
liangyongfei 发表于 2018-4-19 17:58
确实是这样的
这样吧,你不要通过
toggleObj.set({

嗯,绑定data可以,我直接用toggle.val()来获取值和设置值toggle状态也能动态变化,就是不知道跟checked属性相比有什么区别的地方么,目前使用正常,显示也正常。。。可以结帖了
传说中路过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-5-18 07:23 , Processed in 0.057903 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表