我的页面上有一个日期选择器,我用今天的日期初始化它。在移植到Vue之前,我使用了:
document.getElementById("entryDate").valueAsDate = new Date()提供
但这在Vue对我不起作用。显然,我需要访问元素本身才能获得valueAsDate属性,所以我需要:
const entryDate = ref(null)
const entryDateElem = ref(null)
onMounted(() => {
entryDateElem.value.valueAsDate = new Date()
})在我的模板里:
<input type="date" ref="entryDateElem" v-model="entryDate"></input>但是日期选择器值不变。如果我在相同的堆栈溢出帖子中使用替代答案(直接设置值),它就会像预期的那样工作。
onMounted(() => {
entryDate.value = new Date().toISOString().substr(0, 10)
})但是为什么valueAsDate不能工作呢?我已经检查过entryDateElem.value是否引用了相关的元素。
发布于 2021-03-28 17:21:19
在vue中,不建议使用vanilla JS操作DOM,因为Vue是数据驱动的框架,这意味着输入应该绑定到数据属性,并且它是根据该数据进行更改的,而不是将原始数据分配给它的属性如下:
entryDateElem.value.valueAsDate = new Date() // you're manipulating directly the DOM ❌正确的方法:
entryDate.value = new Date() // you're manipulating the data ✔https://stackoverflow.com/questions/66844015
复制相似问题