今天使用picker组件遇到了一个问题,页面加载时会触发picker组件的onchange事件。安装官方的说法是,数据变化会自动触发该事件。 那么,页面初始化也会触发该事件,这么一来,但我要初始化指定默认值时,这里会有问题。
问题是什么呢? 想想...
我在created方法初始化默认值,这个值是全局的,用户登录就存在了。 进入当前页面,我还需要加载当前业务的数据,我在created调用接口方法拉取数据,同时还会初始化picker的slots数据。 问题这时就来了,我已经初始化了picker的默认值,但当picker的slots数据初始化完后,还会加载change事件(change事件里面把选中的值赋给变量),这时把默认值设置为数组的第一个值了。
问题发现了,自己停下来想了想....
恩,这样应该能行。是的,能行,^_^!
在change事件中加一个boolean值判断是否第一次加载,如果第一次加载就不赋值。
上代码:
1、picker组件调用:
<picker :slots="subjects" valueKey="subjectName" @change="onValuesSubject"></picker>
2、change事件:
onValuesSubject: function (picker, values) { var that = this let vlus = values[0] if (vlus) { if (that.isChange) { that.subjectName = vlus.subjectName that.subjectId = vlus.subjectId that.subjectState = 'success' } that.isChange = true } }
基本就这样了,但是还有个问题没解决,选择第一个选项时,点击无效。必须另选一个再选第一个点击才有效。而且,默认值的位置也不是option的第一个啊。 这个问题待解...