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);
					});
				},
相关推荐
一天 24h2 小时前
Vue3父子组件传值:从零到精通
前端·javascript·vue.js·pycharm·npm·学习方法
大家的林语冰2 小时前
CSS 新函数上市,一行代码让文本自动变色,无需 JS 也能符合 W3C 无障碍对比度标准
前端·javascript·css
爱勇宝2 小时前
前端工程师的下一站:不是失业,而是 AI Engineer
前端·javascript·架构
小雨下雨的雨2 小时前
电池电量检测工具 - 鸿蒙PC用Electron框架技术实现详解
前端·javascript·华为·electron·鸿蒙·鸿蒙系统
DFT计算杂谈2 小时前
VASP 磁性结构可视化:一键生成完美 VESTA / MCIF
java·前端·css·html·css3
砍材农夫2 小时前
物联网实战:Spring Boot MQTT | 模拟器Paho客户端拆解核心点
java·javascript·网络·spring boot·后端·物联网
小李云雾2 小时前
Vue Router 从入门到精通:路由核心知识点全解析
前端·javascript·vue.js
weixin_539446782 小时前
使用Java HttpServletResponse和JavaScript Fetch下载文件
java·javascript·python
每天吃饭的羊2 小时前
LeetCode JS 常用辅助数据结构
前端
丑过三八线2 小时前
【无标题】
前端