vue实现可视化可拖放的自定义表单(代码示例)


当前第2页 返回上一页

拖放组件使用vuedraggable,拖放完成的时候,鉴于MVVM的特点,画面改变<=>数据改变,操作vuex时注意不能直接修改state

1

2

3

4

5

6

7

8

9

10

computed: {

    myList: {

        get() {

            return this.$store.state.myList

        },

        set(value) {

            this.$store.commit('updateList', value)

        }

    }

}

整个数据流向: 左栏组件库<-->中间展示栏 <---->右栏属性设置, 控制不好数据的话,可能会出现原始数据被修改的情况。请看:

1

2

3

4

var a = { k: 1 }

var b = a

b.k = 2

console.log(a) // { k: 2 }

这就会无意间导致数据被修改,很难排查。可以使用Object.freeze冻结对象,避免出错。

Object.freeze

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

function deepFreeze(obj) {

 

  // 取回定义在obj上的属性名

  var propNames = Object.getOwnPropertyNames(obj);

 

  // 在冻结自身之前冻结属性

  propNames.forEach(function(name) {

    var prop = obj[name];

 

    // 如果prop是个对象,冻结它

    if (typeof prop == 'object' && prop !== null)

      deepFreeze(prop);

  });

 

  // 冻结自身(no-op if already frozen)

  return Object.freeze(obj);

}

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript教程视频栏目!

以上就是vue实现可视化可拖放的自定义表单(代码示例)的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

javascript如何判断字符串中是否包含某个字符串

javascript数字怎么转换为字符串

javascript如何实现禁止刷新效果

javascript中show方法怎么用

什么是js深拷贝和浅拷贝及其实现方式

vue.js如何循环数组

vue.js支持哪些浏览器

javascript如何输入数据

vue.js为什么要镜像

详解6个不同级别的组件可重用性概念

更多相关阅读请进入《vue.js》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...