• form表单数据回显双向绑定失效的原因


    最近看vue源码分析类的文章,断断续续的看着,时不时发现一些以前没注意的一些点。

    正好前段时间写项目时突然发现有时候用element-UI的表单时,在一个弹框里,数据回显,最开始表单绑定的对象是空对象,然后我直接给表单的数据指定了哪些字段赋值,然后在修改表单内容时,发现怎么输入不进去呢,像是双向绑定失效了。类型下面这种写法

     1 export default {
     2     data () {
     3         return {
     4             form: {}
     5         }
     6     },
     7       methods: {
     8             editPop () {
     9               this.form.selectType = 0
    10           }
    11      }            

    当时没多想,直接给最开始的空对象里添加了那几个要显示的字段,然后再赋值,就可以正常输入了,即可以实现双向绑定了。

    当时不明白什么原因,还以为是element的bug,今天看vue源码解析的文章时,作者的一句话让我想明白了出现上述问题的原因:对于使用 Object.defineProperty 实现响应式的对象,当我们去给这个对象添加一个新的属性的时候,是不能够触发它的 setter 的。

    一开始我的表单存储的对象是空对象,然后我指定给对象里的属性的时候,这些属性是之前没有的,所以就不能触发setter。所以才有了$set这个方法,通过$set可以新增一个响应式的属性,就可以实现双向绑定了。

    以前没有注意到这个问题,现在明白了,总算是知其所以然了

  • 相关阅读:
    c#MD5珍藏
    html跳转倒计时
    微信支付.NET版开发总结(JS API),好多坑,适当精简
    zip文件jQuery工作地点选择城市代码
    百度地图Api进阶教程-点击生成和拖动标注4.html
    MySQL注入
    SQL语法:inner join on, left join on, right join on详细使用方法
    Mysql INNER,LEFT ,RIGHT join的使用
    让Sql语句区分大小写
    关于try和finaly 里面return的问题
  • 原文地址:https://www.cnblogs.com/liuqin-always/p/13750695.html
Copyright © 2020-2023  润新知