紧接上文,接下来我们要处理布局问题,利用成熟工具最容易实现的布局是 grid 布局,我们将采用此种方式,配合 vue-grid-layout 来完成,首先我们来看看效果:

基本功能实现的差不多了,我们需要改变思维方式,即:

之前是自底向上,从功能角度解决一些复杂的点,现在需要自顶向下解决问题

首先我们需要一个 EJSHandler 组件 和一个 EJSHandlerService 类,这个类我们将依赖注入,其下的所有组件都将可以访问到他们的数据:

加入了一些测试数据

然后,我们创建一个 Layout 组件和相关服务,使用 vue-grid-layout:

相关服务为:

用一个新的 WidgetService, 继承自 Template service (只有一层,不用太过担心):

界面很美好,功能基本都完成

但是有个很恐怖的一点,响应式保持失败了,为什么呢?

一旦点击按钮更新 ejs 的组件,会发现报错,拿不到value

记住这个错误:

Uncaught (in promise) TypeError: Cannot create property 'value' on string/number/data

是的,这就是Vue新版本的重难点 ——

响应式保持

模板中一旦写入了 ref,自然会被 Vue 拆包,一般情况下这个不会影响太大,但是若是第三方库在子组件中进行了模板映射,出现了拆包动作,问题就很难解决了:

我们将一个包含ref的复杂结构传入给了 vue-grid-layout,并不知道他会不会改我们的值,Vue3 目前正式版都还没有发售,第三方库肯定没有响应式保持的意识,因此,将 WidgetService 伙同 layout 数据一股脑传进去是绝对会失败的,即便我这么处理也没有用:

这里我并没有强制更新所有子项,然而还是失败了

html 还是字符串,不是 ref

响应式保持的 bug,修改起来会非常消耗时间,我在优化的同时,也总结了一套解决响应时保持问题的规则,可以与大家共享

将在下一章开个特别篇讨论~

vue使用js-cookie写入获取不到_Vue 面向对象 - 实战 - 内容管理系统(五)相关推荐

  1. vue中js文件里获取this(vue实例)

    vue中js文件里获取this(vue实例) 1,在main.js中抛出vue实例,在需要用到的地方引入即可 main.js里let vueThis= new Vue({el: '#app',rout ...

  2. vue的js文件中获取vue实例

    1.main.js导出vue实例: 1 var vue = new Vue({ 2 el: '#app', 3 router, 4 components: { App }, 5 template: ' ...

  3. vue main.js中引入js_手把手教你深入Vue3.0(Vue-cli4)项目打包性能优化实践

    记录了自己的博客在禁用缓存的情况下,从八九秒加载时间到最终985ms的优化实践,开启缓存的情况下能达到138ms的访问速度 本人的个人博客采用的是Vue-cli4.1.2 + typescript构建 ...

  4. Vue.js中$refs{}获取DOM元素

    如果我们想获取DOM元素,一般使用js中的document.querySelector来获取这个dom节点,然后在获取元素的值,现在Vue提供给我们一种更便捷的方式来获取DOM元素-----$refs ...

  5. 挖坑指南:如何在引用的外部js文件中获取vue页面实例?(独家)

    原文链接 前言 在基于iView的后台项目中,表格组件是我们的老朋友了.实现如下的效果更是最基本的需求: 开始 在iView早期1.x的版本(其实在~2.0.0-rc.7也能使用),想要渲染这样的效果 ...

  6. JS Cookie获取值

    Cookie Cookie 是直接存储在浏览器中的一小串数据.它们是 HTTP 协议的一部分,由 RFC 6265 规范定义. Cookie 通常是由 Web 服务器使用响应 Set-Cookie H ...

  7. JS创建、获取、删除 cookie 方法

    js 创建 cookie 方法 // 没有设置 cookie 过期时间的话,默认是 会话cookie(浏览器关闭时,该cookie失效,被删除) document.cookie = cname + & ...

  8. JS设置,获取,删除cookie

    JS设置,获取,删除cookie 由于chrome等浏览器存在samesite安全措施,导致传统http页面后端无法设置cookie到前端,所以考虑在返回值中添加cookie值,使用前端js进行coo ...

  9. 解决cookie写入问题

    解决cookie写入问题 接下来我们查看首页cookie: 什么都没有,为什么? 问题分析 我们在之前测试时,清晰的看到了响应头中,有Set-Cookie属性,为什么在这里却什么都没有? 我们之前在讲 ...

最新文章

  1. ppcelerator徐旸:新一代移动互联网技术
  2. WPF Converter 使用复杂参数的方法
  3. Javascript 笔记(1)----函数
  4. 冰点文库下载V2绿色版,无需积分自由下载百度,mbalib,豆丁,畅享,hp009,max.book118 文档...
  5. javascript 和 jsp (java server page)的区别
  6. ffmpeg-20160714-git-bin.7z
  7. 中国电信5G技术承载网络
  8. 自动阅读专业版第七次更新---原薅羊毛专业版
  9. 【leetcode】995. Minimum Number of K Consecutive Bit Flips
  10. Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage We noticed that your app requires
  11. Android 地图跳转到百度、高德、腾讯地图导航
  12. RegExp正则表达式-基本语法
  13. macOS如何编辑hosts
  14. lq到底是什么意思_LQ网络用语是什么意思?
  15. 通信原理及系统系列33——无线信道(快衰落)
  16. 数据结构课设_网页形式的景区导游
  17. 《C语言程序设计第三版》(苏小红)习题九 课后答案
  18. 谷歌白帽SEO技术让你的搜索流量暴涨
  19. C#远程服务器返回错误: (500) 内部服务器错误
  20. 跟着鸟哥学linux【三】

热门文章

  1. java http请求_如何设置Fiddler来拦截Java代码发送HTTP请求,进行各种问题排查
  2. 带你一起学习实用计算机英语!(IT行业、四六级党记起来)《软件工程专业英语》第二单元的重点词汇+名词缩写+重难句+软件需求规格说明
  3. Vue项目中自动将px转换为rem
  4. 解析.DBC文件, 读懂CAN通信矩阵,实现车内信号仿真
  5. C Shuffle Cards
  6. msp430项目编程14
  7. android踩坑日记1
  8. shell脚本中的条件测试if中的-z到-d的意思
  9. Mac下svn搭建和使用方法
  10. Codeforces Round #148 (Div. 2)