美文网首页
vue2.0入手踩坑系列文章-表单初始值(Vue.set)

vue2.0入手踩坑系列文章-表单初始值(Vue.set)

作者: 麦壳儿UIandFE2 | 来源:发表于2018-07-16 19:02 被阅读23次

    1:浏览器怪异现象
    表单元素操作失灵,不可以修改其值。

    2:原因
    页面在一上来就想让表单元素有个初始值,并且这个表单元素的值后续可以正常改动(带有双向绑定的特性),有两种做法:

    【方式一】:那么在data中必须先声明好对应的字段,否则后续修改失灵。
    源码:

        // 数据绑定
        data() {
          return {
            // 表单数据 双向绑定响应的
            sendParams:{
              effectiveTime:[]
            }
          }
        },
      // 扩展属性,并赋默认值
       created() {
          this.sendParams.effectiveTime = ["2018-07-13 00:00:00", "2018-07-18 00:00:00"]
      }
    

    原理:

    对于这种双向绑定的表单数据,实例创建时候给表单数据对象sendParams的一个属性赋默认值,但是此时dom还没上来,也就是不可能有用户的对应数据录入,表单对象sendParams身上还没有这个属性名,那我们要赋值,必须在data中先声明

    【方式二】:采用Vue.set的方式。

    源码:

      // 扩展属性,并赋默认值
        created() {
          Vue.set(this.sendParams, 'effectiveTime', ["2018-07-13 00:00:00", "2018-07-18 00:00:00"])
        }
    

    原理:

    当给一个被观测的对象props 、 data)添加一个新属性时,不能直接添加,必须使用 Vue.set 方法。否则新增的属性的值是没办法响应式改变的。
    Vue.set 给某对象扩展属性时,如果此对象是响应式的,那该扩展出来的新属性也是响应式的,同时触发视图更新

    效果:
    日期控件恢复正常。(这里是elementUI中组件)


    image.png

    相关文章

      网友评论

          本文标题:vue2.0入手踩坑系列文章-表单初始值(Vue.set)

          本文链接:https://www.haomeiwen.com/subject/ijzbpftx.html