tnblog
首页
视频
资源
登录

修改qadmin中vue重复绑定对象问题

5002人阅读 2020/6/6 20:11 总访问:702095 评论:0 收藏:0 手机
分类: 架构

qadmin中绑定的vue绑定的对象是app,这个是id=app的div是全局的,会影响所有的子标签,如果子标签在去使用了vue实例,就很容易出现数据源错乱的问题,造成数据源修改后页面不会改变。

所以修改一下,结构,让vue只绑定应该绑定的,范围放小一点就好。

然后在对应修改一下script.js即可

  1. //if(!/^http(s*):\/\//.test(location.href)){
  2. //    alert('请先部署到 localhost 下再访问');
  3. //    window.location.href = 'login.html';
  4. //}
  5. layui.use('form'function ({
  6.     var form = layui.form,
  7.         layer = layui.layer;
  8. });
  9. var headVue = new Vue({
  10.     el'#head',
  11.     data: {
  12.         webname_left: config.webname_left,
  13.         webname_right: config.webname_right,
  14.         address: []
  15.     },
  16.     methods: {
  17.     }
  18. });
  19. var leftmenuVue = new Vue({
  20.     el'#leftmenu',
  21.     data: {
  22.         menu: []
  23.     },
  24.     createdfunction ({
  25.         //加载左侧菜单
  26.         if (config.debug) {
  27.             $.ajax({
  28.                 url: config.menuUrl,
  29.                 dataType'text',
  30.                 success(menu) => {
  31.                     menu = eval('(' + menu + ')');
  32.                     sessionStorage.menu = JSON.stringify(menu);
  33.                     this.menu = menu;
  34.                     this.thisActive();
  35.                     this.thisAttr();
  36.                 }
  37.             })
  38.         } else {
  39.             let data = sessionStorage.menu;
  40.             if (!data) {
  41.                 $.ajax({
  42.                     url: config.menuUrl,
  43.                     dataType'text',
  44.                     success(menu) => {
  45.                         menu = eval('(' + menu + ')');
  46.                         sessionStorage.menu = JSON.stringify(menu);
  47.                         this.menu = menu;
  48.                         this.thisActive();
  49.                         this.thisAttr();
  50.                     }
  51.                 })
  52.             } else {
  53.                 this.menu = JSON.parse(data);
  54.                 this.thisActive();
  55.                 this.thisAttr();
  56.             }
  57.         }
  58.     },
  59.     methods: {
  60.         //记住收展
  61.         onActive: function (pid, id = false{
  62.             let data;
  63.             if (id === false) {
  64.                 data = this.menu[pid];
  65.                 if (data.url.length > 0) {
  66.                     this.menu.forEach((v, k) => {
  67.                         v.active = false;
  68.                         v.list.forEach((v2, k2) => {
  69.                             v2.active = false;
  70.                         })
  71.                     })
  72.                     data.active = true;
  73.                 }
  74.                 data.hidden = !data.hidden;
  75.             } else {
  76.                 this.menu.forEach((v, k) => {
  77.                     v.active = false;
  78.                     v.list.forEach((v2, k2) => {
  79.                         v2.active = false;
  80.                     })
  81.                 })
  82.                 data = this.menu[pid].list[id];
  83.             }
  84.             this.updateStorage();
  85.             if (data.url.length > 0) {
  86.                 if (data.target) {
  87.                     if (data.target == '_blank') {
  88.                         window.open(data.url);
  89.                     } else {
  90.                         window.location.href = data.url;
  91.                     }
  92.                 } else {
  93.                     window.location.href = data.url;
  94.                 }
  95.             }
  96.         },
  97.         //更新菜单缓存
  98.         updateStorage() {
  99.             sessionStorage.menu = JSON.stringify(this.menu);
  100.         },
  101.         //菜单高亮
  102.         thisActive: function ({
  103.             let pathname = window.location.pathname;
  104.             let host = window.location.host;
  105.             let pid = false;
  106.             let id = false;
  107.             this.menu.forEach((v, k) => {
  108.                 let url = v.url;
  109.                 if (url.length > 0) {
  110.                     if (url[0] != '/' && url.substr(04) != 'http') {
  111.                         url = '/' + url;
  112.                     }
  113.                 }
  114.                 if (pathname == url) {
  115.                     pid = k;
  116.                 }
  117.                 v.list.forEach((v2, k2) => {
  118.                     let url = v2.url;
  119.                     if (url.length > 0) {
  120.                         if (url[0] != '/' && url.substr(04) != 'http') {
  121.                             url = '/' + url;
  122.                         }
  123.                     }
  124.                     if (pathname == url) {
  125.                         pid = k;
  126.                         id = k2;
  127.                     }
  128.                 })
  129.             })
  130.             if (id !== false) {
  131.                 this.menu[pid].list[id].active = true;
  132.             } else {
  133.                 if (pid !== false) {
  134.                     this.menu[pid].active = true;
  135.                 }
  136.             }
  137.             this.updateStorage();
  138.         },
  139.         //当前位置
  140.         thisAttr: function ({
  141.             //当前位置
  142.             let address = [{
  143.                 name'首页',
  144.                 url'index.html'
  145.             }];
  146.             this.menu.forEach((v, k) => {
  147.                 v.list.forEach((v2, k2) => {
  148.                     if (v2.active) {
  149.                         address.push({
  150.                             name: v.name,
  151.                             url'javascript:;'
  152.                         })
  153.                         address.push({
  154.                             name: v2.name,
  155.                             url: v2.url,
  156.                         });
  157.                         //这里直接赋值不行要赋值头部的
  158.                         headVue.$data.address = address;
  159.                     }
  160.                 })
  161.             })
  162.         }
  163.     }
  164. });
  165. $(document).ready(function ({
  166.     //删除
  167.     $(".del").click(function ({
  168.         var url = $(this).attr("href");
  169.         var id = $(this).attr("data-id");
  170.         layer.confirm('你确定要删除么?', {
  171.             btn: ['确定''取消'//按钮
  172.         }, function ({
  173.             $.get(url, function (data{
  174.                 if (data.code == 1) {
  175.                     $(id).fadeOut();
  176.                     layer.msg(data.msg, { icon1 });
  177.                 } else {
  178.                     layer.msg(data.msg, { icon2 });
  179.                 }
  180.             });
  181.         }, function ({
  182.             layer.msg("您取消了删除!");
  183.         });
  184.         return false;
  185.     });
  186. })
  187. function delCache({
  188.     sessionStorage.clear();
  189.     localStorage.clear();
  190. }
  191. function msg(code = 1, msg = '', url = '', s = 3{
  192.     if (typeof code == 'object') {
  193.         msg = code.msg;
  194.         url = code.url || '';
  195.         s = code.s || 3;
  196.         code = code.code;
  197.     }
  198.     code = code == 1 ? 1 : 2;
  199.     layer.msg(msg, { icon: code, offset: config.layerMsg.offset || 't'shade: config.layerMsg.shade || [0.4'#000'] });
  200.     if (url) {
  201.         setTimeout(function ({
  202.             window.location.href = url;
  203.         }, s * 1000);
  204.     }
  205. }

这里还是有点小技巧的,vue两个对象可以相互访问,如下这句,不然两个对象都要绑定那个菜单的数据源很容易错乱

headVue.$data.address = address;


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价

EasyUI弹窗批量修改combogrid下拉框的值

JS方法//点击弹出批量修改框 UpdateLot:function(){ varrow=$("#dg").datagrid("getChecked"); if(...

如何修改重置MD5加密后的SQL用户密码

二次开发时,要加一个忘记密码的功能,后台写了修改密码的方法,数据库执行也修改成功,但是登录一直提示密码错误。之所以...

如何修改CSS存在的element.style内联样式

改腾讯地图的时候调整了下样式,发现样式一直存在问题,修改style里面的值,一点用都没有,html中这个值还找不到是在哪里出...

修改了css后,让浏览器从缓存更新

当我们修改了css后,如果不做一些操作,浏览器是不会自动更新我们的样式文件的。除非是过期或者用户手动刷新清理缓存等。所...

修改电脑的鼠标指针样式

安装完系统之后呢,觉点电脑自带的鼠标指针样式特别丑,下面推荐更换电脑鼠标指针的方法1.鼠标指针的下载地址:http://www....

修改rabbitmq的连接端口

rabbitmq的默认连接端口是5672,如果要修改的话,可以通过配置文件修改当然一般情况下都会遇到坑默认配置文件地址:安装目...

使用jquery操作元素的css样式(获取、修改等等)

使用jquery操作元素的css样式(获取、修改等等) //1、获取和设置样式 $("#tow").attr("class")...

.net webapi Newtonsoft.Json返回需要的字段,忽略某些字段,修改字段名,动态返回需要的字段等

有时候我们在写webapi的时候,不想把正常用的对象所有字段都返回,我们需要进行一些筛选,忽略某些字段,大概说一下几种方法...

mui框架-移动端跳转以及传值的简单方法(修改解决方法)

纠结了两天的MUI跳转的问题,终于解决了 ,现在分享给大家,希望大家有什么坑的解决也给我分享分享 哈哈,废话不多说,上代...

vs2019开发net core3.x修改视图页面后,刷新浏览器看不到修改后的效果

一:安装依赖包Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation NuGet 包。Install-PackageMicrosoft.AspNetCore.Mvc.R...

shell脚本强制修改MySQL --root密码

话不多说直接拿去撸;PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/binexport PATHread -p &quot...

EF多种更新方法。EF修改,Entity Framework修改。abp vnext ef 更新封装

[TOC] 方法1:直接执行更新的sql语句过于简单不说了 方法2:先查询在更新Users result = oapEntities.Users.Where(a =&gt...

msdn把英文修改

非常简单,so easy只需要把地址栏的zh-cn修改成zh-cn即可

SVN 解决同时提交修改的项目冲突问题

首先为了方便理解,创建两个文件夹。aa 和 bb 里面放一个类cs两个都已经修改过了ab两个内容都不同a,b提交后出现的问题是:...

EFCore动态修改数据库连接字符串

code:context.Database.GetDbConnection().ConnectionString="数据库连接字符串"
如果有缘,错过了还会重来,如果无缘,相遇了也会离开
排名
9
文章
115
粉丝
5
评论
5
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术