收藏
回答

方法里面,通过this获取data里面的参数,为什么这个参数会发生变化?

<view class="tr">

<view class="tdText">计划发车时间:</view>

<view class="tdInput">

<picker mode="multiSelector" disabled="{{!haveCode}}" value="{{planStartTime}}" bindchange="changeDateTime1" bindcolumnchange="changeDateTimeColumn1" range="{{dateTimeArray1}}">

<view class="tui-picker-detail">

{{dateTimeArray1[0][planStartTime[0]]}}-{{dateTimeArray1[1][planStartTime[1]]}}-{{dateTimeArray1[2][planStartTime[2]]}} {{dateTimeArray1[3][planStartTime[3]]}}:{{dateTimeArray1[4][planStartTime[4]]}}

</view>

</picker>

</view>

</view>



<view class="tr">

<view class="tdText">计划到达时间:</view>

<view class="tdInput">

<picker mode="multiSelector" disabled="{{!haveCode}}" value="{{planEndTime}}" bindchange="planEndTime" bindcolumnchange="planEndTimeColumn1" range="{{dateTimeArray1}}">

<view class="tui-picker-detail">

{{dateTimeArray1[0][planEndTime[0]]}}-{{dateTimeArray1[1][planEndTime[1]]}}-{{dateTimeArray1[2][planEndTime[2]]}} {{dateTimeArray1[3][planEndTime[3]]}}:{{dateTimeArray1[4][planEndTime[4]]}}

</view>

</picker>

</view>

</view>

这是页面代码,

//计划发车时间 选择时候触发

changeDateTimeColumn1(e) {

var arr = this.data.planStartTime, dateArr = this.data.dateTimeArray1;

arr[e.detail.column] = e.detail.value;

dateArr[2] = dateTimePicker.getMonthDay(dateArr[0][arr[0]], dateArr[1][arr[1]]);

var beginTime = this.data.dateTimeArray1[0][arr[0]] + "-" + this.data.dateTimeArray1[1][arr[1]] + "-" + this.data.dateTimeArray1[2][arr[2]] + " " + this.data.dateTimeArray1[3][arr[3]] + ":" + this.data.dateTimeArray1[4][arr[4]];

var planBeginTime = new Date(Date.parse(beginTime))

var t = new Date();

if (t > planBeginTime) {

wx.showToast({

title: '计划开始时间不能小于当前时间',

icon: 'none',

duration: 2000

})

return;

}

this.setData({

dateTimeArray1: dateArr,

planStartTime: arr

});

},

planStartTime是在这个函数里面修改的,

//计划结束时间 选择时候触发

planEndTimeColumn1(e) {

var arr = this.data.planEndTime, dateArr = this.data.dateTimeArray1;

var arr1 = this.data.planStartTime;//在这里获取,

console.log(arr)

console.log(arr1)

for (var i = 0; i < arr.length ; i++){

if (arr[i] < arr1[i]){

wx.showToast({

title: '计划到达时间不得小于计划发车时间',

icon: 'none',

duration: 2000

})

return;

}

}

}

为什么在后面这个函数里面planStartTime也会被修改,我只是获取数据而已

最后一次编辑于  09-09  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

2 个回答

  • จุ๊บ
    จุ๊บ
    09-09

    因为你在上一个函数里面setData 了 planStartTime,已经改变了原来的数据,再次获取的话,肯定会变啊。

    09-09
    赞同
    回复 6
    • 凌嘉泉
      凌嘉泉
      09-09
      问题是let arr1 = this.data.planStartTime; let arr2 = this.data.planEndTime; arr2[e.detail.column] = Number(e.detail.value); console.log(arr1) console.log(arr2) 这里的arr2会随着arr1改变而改变
      09-09
      回复
    • จุ๊บ
      จุ๊บ
      09-09回复凌嘉泉

      自己梳理下你的代码吧,不用想别的。你这肯定是代码书写问题

      09-09
      回复
    • 凌嘉泉
      凌嘉泉
      09-09
      https://developers.weixin.qq.com/s/u1GVKfmI7Xb3 这是代码片段
      09-09
      回复
    • จุ๊บ
      จุ๊บ
      09-09回复凌嘉泉

      代码片段 并不完整,无法检查问题

      09-09
      回复
    • 凌嘉泉
      凌嘉泉
      09-09
      跟这个参数有关的代码都在这里了
      09-09
      回复
    查看更多(1)
  • 思男
    思男
    09-09

    代码太乱没看,估摸着是数据拷贝问题,深拷贝试试


    请使用代码片段提供可复现问题的代码

    https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    09-09
    赞同
    回复 2
    • 凌嘉泉
      凌嘉泉
      09-09
      https://developers.weixin.qq.com/s/u1GVKfmI7Xb3
      09-09
      回复
    • 思男
      思男
      09-09回复凌嘉泉
      第几行有问题?哪里打印。,你这没有呀。
      09-09
      回复
问题标签