近些日子上手vue全家桶,深感本身的知识水平浅薄,在摸索之中记录了我遇到的一些问题的解决方法。html
这个一开始我就想利用vuex
的store存储到state之中就大功告成了。
然而发现事情并无那么简单,本身原来的js写法是利用oninput
事件进行记录用户输入的内容。可是兼容性并非特别好。
几天前搜索的时候发现了一个更好的方法:
先提取store中的数据传给computed
计算属性,而后再把这个值传给v-model
用于表单的数据绑定,最后再为这个计算属性增长一个setter
,在表单数据变化的时候对值进行commit
提交,从而达到数据的实时更新的效果。
参考问答:请问vue的html标签能够用v-model来改变store中的state吗?vue
在vue之中由于vm.$el
的存在就能够利用ref替代原来的dom操做了。
可是有些状况refs仍是会出现问题的。
首先不要再mounted
钩子以前调用,这样的话由于要获取的对象并无挂载到实例上而致使失败。
另外还有一种状况就是,不要在响应式的渲染之中(我的的失败经历:条件渲染v-if和循环v-for)使用获取ref注册的元素或组件。
虽然在控制台之中能够看到this.$refs
包含了你要获取的对象,可是你在实际调用之中会获取失败。
这也是在vue官方文档里进行了说明:vuex
关于ref注册时间的重要说明: 由于ref自己是做为渲染结果被建立的,在初始渲染的时候你不能访问它们 - 它们还不存在!
$refs
也不是响应式的,所以你不该该试图用它在模版中作数据绑定。segmentfault
对于这种状况咱们能够有如下两种方法进行变通处理:dom
直接为元素添加id经过原始dom进行操做处理this
经过nextTick进行渲染后的refs获取,这样就不会出现获取失败的状况。
对于nextTick的官方说明以下code
在下次 DOM 更新循环结束以后执行延迟回调。在修改数据以后当即使用这个方法,获取更新后的 DOMhtm