阿米兔不是驴呀呀呀 2023-04-06 11:19 采纳率: 60%
浏览 90
已结题

关于vue侦听器赋值的问题

我在侦听器中设置了这样一个逻辑:监听日期选择器中绑定的日期,如果选中的日期和当前时间new Date()相同,则根据当前时间所处时段,给单选框的v-model赋值“上午”或“下午”。但是每当我赋值成功之后,单选框组就无法操作了,其他的单选框按钮无法被选中。

img

            <div class="singleRow">
                <van-field readonly clickable v-model="formData.startTime" placeholder="开始时间"
                    label="开始时间:" label-width="70px" @click="showPicker = true" />
                <van-radio-group style="min-width: 150px;" v-model="formData.startShiduan" direction="horizontal">
                    <van-radio name="上午" value="上午">上午</van-radio>
                    <van-radio name="下午" value="下午">下午</van-radio>
                </van-radio-group>
            </div>
            <div class="singleRow">
                <van-field readonly clickable v-model="formData.endTime" placeholder="结束时间"
                    label="结束时间:" label-width="70px" @click="showPicker2 = true" />
                <van-radio-group style="min-width: 150px;" v-model="formData.endShiduan" direction="horizontal">
                    <van-radio name="上午" value="上午">上午</van-radio>
                    <van-radio name="下午" value="下午">下午</van-radio>
                </van-radio-group>
            </div>
        watch: {
            formData: {
                handler: function(newValue, oldValue) {
                    const startDate = new Date(newValue.startTime).setHours(0, 0, 0, 0);
                    const endDate = new Date(newValue.endTime).setHours(0, 0, 0, 0);
                    const todayDate = new Date().setHours(0, 0, 0, 0);
                    // 如果开始时间是当天
                    if (startDate == todayDate) {
                        const hours = new Date().getHours();
                        if (hours >= 0 && hours < 12) {
                            this.formData.startShiduan = "上午";
                        } else if (hours >= 12 && hours < 24) {
                            this.formData.startShiduan = "下午";
                        }
                    }
                    // 如果结束时间是当天
                    if (endDate == todayDate) {
                        const hours = new Date().getHours();
                        if (hours >= 0 && hours < 12) {
                            this.formData.endShiduan = "上午";
                        } else if (hours >= 12 && hours < 24) {
                            this.formData.endShiduan = "下午";
                        }
                    }
                },
                deep: true,
                immediate: true
            }
        }

代码如上,请各位帮忙看看问题出在哪里

  • 写回答

5条回答 默认 最新

  • isMae 2023-04-06 15:09
    关注

    貌似看着没啥大问题,不过你van-radio中的value没用可以删了,还有其实可以不用watch,你应该是点击输入框后弹出日期选择器组件的吧?用组件的confirm事件不就可以进行你的判断了吗,为啥要用watch

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 4月16日
  • 已采纳回答 4月8日
  • 赞助了问题酬金15元 4月6日
  • 修改了问题 4月6日
  • 展开全部

悬赏问题

  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”