|
[多端开发]
picker range数据不会刷新
[复制链接]
demo中的地址选择是可以刷新的,仿照做的,但我写的死都不会刷新
- <template>
- <view class="list_item list_two" data-type="birthday">
- <picker class="region-picker" mode="multiSelector" range={dataset} value={selectValue}
- onChange={this.multiSelectorChange} oncolumnchange="onselectcolumnchange">
- <text>{this.props.name}:{this.props.data || "请选择"}</text>
- </picker>
- </view>
- </template>
- <script>
- export default {
- name: 'date-picker',
- data() {
- return {
- dataset: [],
- selectValue: [0, 0, 0],
- }
- },
- methods: {
- install() {
- //年
- var year = new Date().getFullYear();
- var years = [];
- for (var i = year - 100; i <= year; i++) {
- years.push(i);
- }
- this.data.dataset[0] = years;
- //月
- this.data.dataset[1] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
- //this.data.dateDesc = this.data.dataset[0][0] + '-' + this.data.dataset[1][0] + '-' + this.data.dataset[2][0];
- //console.log(JSON.stringify(this.data.dataset));
- //初始化日
- this.data.dataset[2] = [1, 2, 3, 4, 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15];
- },
- multiSelectorChange(e) {
- console.log(JSON.stringify(e.detail));
- this.data.multiSelectorValue = e.detail.value;
- this.data.dateDesc = this.data.dataset[0][this.data.multiSelectorValue[0]] + '-' + this.data.dataset[1][this.data.multiSelectorValue[1]] + '-' + this.data.dataset[2][this.data.multiSelectorValue[2]];
- this.fire('change', { value: this.data.dateDesc });
- },
- onselectcolumnchange(e) {
- this.data.dataset[2] = [1, 2, 3, 4, 6, 6];
- var column = e.detail.column;
- if (column == this.data.dataset.length - 1) {
- return;
- }
- var value = e.detail.value;
- var selectValue = this.data.selectValue;
- selectValue[column] = value;
- if (column == 0) {
- selectValue[2] = 0;
- } else if (column == 1) {
- selectValue[2] = 0;
- }
- this.data.selectValue = selectValue;
- if (column != 2) {
- this.getDaysInMonth(this.data.dataset[0][value], this.data.dataset[1][selectValue[1]]);
- }
- },
- getDaysInMonth(year, month) {
- month = parseInt(month, 10); //parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制。
- var temp = new Date(year, month, 0);
- var allday = temp.getDate();
- var days = [];
- for (var i = 1; i <= allday; i++) {
- days.push(i);
- }
- var dataset = this.data.dataset;
- dataset[2] = days;
- this.data.dataset = dataset;
- console.log(JSON.stringify(this.data.dataset))
- }
- }
- }
- </script>
- <style scoped>
- .region-picker{
- flex-direction: row;
- justify-content: flex-end;
- align-items: center;
- }
- </style>
复制代码
|
|