美文网首页
dragmove指令继续完善: 清除全局组件的数据

dragmove指令继续完善: 清除全局组件的数据

作者: 凌霄光 | 来源:发表于2018-09-25 17:00 被阅读18次

问题描述

dragmove指令经过封装和多次完善,已经没啥问题了。但今天一个同事告诉我位置没有重置,我说,不应该啊,我位置在跳转登录页就清楚了,而且我都测了。

问题分析和定位

调试过程中,听另一个同事说,课件组件提升为全局了。我突然明白为啥了,之前的组件结构是这样的,

现在成了这样,

明显看到Lecture组件提升了一层,和router-view组件平级了。

清除位置信息的代码是在login的beforeEnter钩子里,

    {
        path: 'login',
        component: Login,
        beforeEnter: (to, from, next) => {
            //清空保存的各弹窗的位置信息
            clearPositionMap();
            next();
        }
    }
//清空位置信息 (退出登录的时候)
export const clearPositionMap = () => {
    positionMap.clear();
}

如果lecture组件变成了全局,那么会导致有一些组件的数据清楚了,但是left、top、right、bottom样式没有清除。

问题解决

既然定位到了问题,那么改动就简单了。我是这么改的。

//清空位置信息 (退出登录的时候)
export const clearPositionMap = () => {
    const ids = positionMap.keys();
    for(let id of ids) {
        const ele = document.getElementById(id);
        if (!ele) continue; 
        ['left', 'right', 'top', 'bottom'].forEach((direction) => {
            ele.style[direction] = null;
        });
    }
    positionMap.clear();
}

(left、top、rigtht、bottom没法清楚了,只能设置成null,让他解析失败)

总结

  1. 封装指令的时候要考虑到绑定和解绑两个过程。之前只考虑了绑定,解绑是组件销毁自动做的,但是组件全局以后,没有了销毁的过程,就要手动去清ui状态了。以后要考虑全面。
  2. style的清除,可以设置成null等,让样式解析失败,自然就清除了

dragmove 完善之路:
开发拖拽指令
添加位置记录功能
修改初始位置不生效的问题
显示隐藏不生效的问题

相关文章

  • dragmove指令继续完善: 清除全局组件的数据

    问题描述 dragmove指令经过封装和多次完善,已经没啥问题了。但今天一个同事告诉我位置没有重置,我说,不应该啊...

  • 周报(好未来第五周)

    本周工作 修复由于Leture组件提升到全局引起的bug。完善dragmove指令。(done) 多个组件替换学员...

  • 月报(好未来第二月)

    本月工作总结 its 1.12.x的需求,主要是秋季皮肤和多组件替换学员姓名 完善dragmove指令,主要是切换...

  • vue指令的坑:完善dragmove指令

    昨天封装了dragmove指令,今天用封装的dragmove指令把项目中的相关代码给替换掉。过程中遇到了一些问题,...

  • 拍案惊奇之v-show的失效

    背景 自从上周封装了dragmove指令之后,组件中的很多拖拽的代码消失了,组件代码清爽了很多。我对这个指令的封装...

  • vue中自定义组件、指令、插件

    组件 全局组件 局部组件 自定义插件 提供install方法,挂载到Vue 指令 使用指令实现input自动获取焦...

  • vue组件系统

    除了根组件之外的全局组件和局部组件的data数据必须是函数 根组件 全局组件: 全局组件注册方式:Vue.comp...

  • 6.自定义指令directives

    1.定义全局指令在main.js中声明全局指令 在元素中使用自定义指令 2.局部指令直接在当前组件中添加direc...

  • Vue文本框限制输入字数

    使用watch方法 自定义指令组件内注册 全局注册

  • vue 自定义指令

    autofocus在safari不工作 全局 案例自定义输入框聚焦指令 组件自定义组件 指令钩子函数 bind 之...

网友评论

      本文标题:dragmove指令继续完善: 清除全局组件的数据

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