广告位联系
返回顶部
分享到

bigScreen大屏配置选项无法和画布中心的展示联动解决介绍

JavaScript 来源:互联网 作者:佚名 发布时间:2023-01-06 21:01:57 人浏览
摘要

问题1. 大屏的配置选项无法和画布中心的展示联动 解决过程: 大概找了2天时间,各种排查数据绑定的问题?文件传参的问题?找的过程中差点没把自己气死???????? 最后发现是数据改变

问题1. 大屏的配置选项无法和画布中心的展示联动

解决过程:

大概找了2天时间,各种排查数据绑定的问题?文件传参的问题?找的过程中差点没把自己气死????????

最后发现是数据改变之后,没有把改变的值更新到右侧的属性配置区。

画布中心首次加载的时候,从config中读取选项值,并且触发右侧的设置。

下一次,通过右侧更改属性值的时候,将值传给dashboard,①子组件监听dashboard的变化,实时更新;② dashboard也要赋值给配置项widgetOption,以便右侧可以保持一致。

代码学习:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

// 源代码:

            widgetValueChanged(key, val) {

                // 更新大屏属性

                if (this.screenCode === 'screen') {

                    let newSetup = [];

                    this.dashboard = common.deepClone(val)

                    this.widgetOptions.setup.forEach(el => {

                        if (el.name === 'width') {

                            el.value = this.dashboard.width

                        } else if (el.name === 'height') {

                            el.value = this.dashboard.height

                        } else if (el.name === 'title') {

                            el.value = this.dashboard.title

                        } else if (el.name === 'backgroundColor') {

                            el.value = this.dashboard.backgroundColor

                        } else if (el.name === 'description') {

                            el.value = this.dashboard.description

                        } else if (el.name === 'backgroundImage') {

                            el.value = this.dashboard.backgroundImage

                        }

                        newSetup.push(el);

                    });

                    this.widgetOptions.setup = newSetup;

                } else {

                    // 更新组件属性

                    for (let i = 0; i < this.widgets.length; i++) {

                        if (this.widgetIndex === i) {

                            this.widgets[i].value[key] = common.deepClone(val);

                            setDefaultValue(this.widgets[i].options[key], val);

                        }

                    }

                }

            },

代码优化:

想将一个对象中的属性依次更新给数组对象中的属性

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

widgetValueChanged(key, val) {

    // 更新大屏属性

    if (this.screenCode === 'screen') {

        let newSetup = [];

        this.dashboard = common.deepClone(val)

        this.widgetOptions.setup.forEach(el => {

            if (this.dashboard.hasOwnProperty(el.name)) {

                el.value = this.dashboard[el.name]

            }

            newSetup.push(el)

        })

        this.widgetOptions.setup = newSetup;

    } else {

        // 更新组件属性

        for (let i = 0; i < this.widgets.length; i++) {

            if (this.widgetIndex === i) {

                this.widgets[i].value[key] = common.deepClone(val);

                setDefaultValue(this.widgets[i].options[key], val);

            }

        }

    }

},


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://juejin.cn/post/7184715771946205240
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计