element-ui 使用 msgbox 去创建el-date-picker时 change事件不响应,value无法绑定。

let h = this.$createElement;

window.vm = this
this.$msgbox({
  message: h('el-date-picker', {
    domProps: {
      value: this.batch_change_time
    },
    on: {
      change: (e) => {
        this.batch_change_time = e
      }
    }
  })
})

需求是弹一个msgbox出来选择时间。

现在问题有两个:

  1. change不会触发(input可以)
  2. value好像没绑定到组件,选择了日期之后日期选择器内容还是空的

是我写法错了么?

阅读 7.5k
2 个回答
  1. 切换日期或时间不会触发change事件, 但清除日期会触发change事件, 具体可以看看picker.vue的源码.
  2. 经过测试, 通过$msgboxmessage选项挂载的vnode, 无法绑定props中的属性, 也就是说只能实现从弹窗vnode到父组件的单向绑定(通过oninput事件, 但是在input事件响应日期改动后, 这个改动却无法再让弹窗vnode响应, 具体表现就是点了其它日期没有反应). 这个也与el-date-picker的实现有关系, 如果它能接收一个nullv-model值, 并且内部不要直接依赖于v-model, 也是就value属性, 那么还是可以抢救一下. 解决这个问题的思路, 就是自己给el-date-picker套一层, 用外层的data帮el-data-picker管理value. 但这个解决办法的的成本已经远远高于使用$msgbox带来的好处, 所以最后我的建议就是...放弃
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题