vue在IE浏览器下父页面向子页面传输对象时数据丢失

现象:

layer弹窗,父页面向子页面传输对象时数据丢失

父页面

javascript 复制代码
            editItem: function(index) { // 修改
                var data = getTableData();
                var row = data[index];

                dialogOpen({
                    id : 'editItemId',
                    title : '修改',
                    url : '../../contract/contractSubject/contractSubjectEdit.html?_' + $.now(),
                    width: '1024px',
                    height: '768px',
                    scroll : true,
                    success : function(iframeId) {
                        top.frames[iframeId].vm.contractSubject = JSON.parse(JSON.stringify(row));
                    },
                    yes : function(iframeId) {
                        // 子页面传值到父页面
                        var result = top.frames[iframeId].vm.acceptClick();
                        if (result) {
                            var temp = {};
                            Object.assign(temp, result);

                            data[index] = temp;
                            $('#dataGrid').bootstrapTable('load', data);

                            // 关闭窗口
                            dialogCloseById(iframeId);
                        }
                    }
                });
            },

子页面,效果:

解决方案:

往子页面传JSON字符串,$nextTick(子页面vue在 DOM 更新完成后执行回调函数),把JSON字符串转换为对象。

父页面:

javascript 复制代码
            editItem: function(index) { // 修改
                var data = getTableData();
                var row = data[index];

                dialogOpen({
                    id : 'editItemId',
                    title : '修改',
                    url : '../../contract/contractSubject/contractSubjectEdit.html?_' + $.now(),
                    width: '1024px',
                    height: '768px',
                    scroll : true,
                    success : function(iframeId) {
                        top.frames[iframeId].vm.init(JSON.stringify(row));
                    },
                    yes : function(iframeId) {
                        // 子页面传值到父页面
                        var result = top.frames[iframeId].vm.acceptClick();
                        if (result) {
                            var temp = {};
                            Object.assign(temp, result);

                            data[index] = temp;
                            $('#dataGrid').bootstrapTable('load', data);

                            // 关闭窗口
                            dialogCloseById(iframeId);
                        }
                    }
                });
            }

子页面:

javascript 复制代码
                init : function(rowStr) {
					// 初始化数据
					var _this = this;
					_this.$nextTick(function () {
						// vue在 DOM 更新完成后执行回调函数
						_this.contractSubject = JSON.parse(rowStr);
					});
				},
相关推荐
爱勇宝10 小时前
大多数人不是在使用 AI 赚钱,而是在帮 AI 公司赚钱
前端·后端·程序员
冬奇Lab11 小时前
每日一个开源项目(第143篇):page-agent - 纯 JS 的网页 GUI Agent,无需截图、无需插件、无需后端
前端·人工智能·agent
To_OC12 小时前
LC 994 腐烂的橘子:人人都说是 BFS 入门题,我却写了三遍才过
javascript·算法·leetcode
IT_陈寒15 小时前
React的这个渲染问题连官方文档都没说清楚
前端·人工智能·后端
追逐时光者17 小时前
别再满网找零散工具了,腾讯 QQ 浏览器这个“帮小忙”工具箱真能省时间
前端·后端
To_OC18 小时前
LC 200 岛屿数量:经典 DFS 入门题,我第一次写居然连方向都搞错了
javascript·算法·leetcode
Asmewill19 小时前
grep&curl命令学习笔记
前端
stringwu19 小时前
Flutter 开发必备:MVI 架构的高效实现指南
前端·flutter
用户21366100357220 小时前
Vue2组件化开发与父子通信
前端·vue.js
Momo__20 小时前
TypeScript satisfies 操作符——比 as 更安全的类型守门员
前端·typescript