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 构造函数和 "new" 操作符详解

javascript怎么将值转换为int类型

js怎么通过类来修改css样式

vue的响应式原理是什么?

介绍我们是如何搭建互动应用

vue组件修改根实例的数据方法(附代码)

javascript中date对象的方法有哪些

如何理解javascript是动态语言

javascript怎么类型转换

javascript怎么禁止缓存

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




打赏

取消

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

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

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

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

评论

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