将一个物体从击倒传递到开启窗口

时间:2013-12-22 08:38:47

标签: javascript json knockout.js

我的网站中有以下场景,页面(开场白)可以打开“设置”页面,您可以在其中更改设置,保存并关闭以便在开启页面中继续。

问题是,现在设置不会从设置页面传递到开启者页面。

所以我在saveSettings函数中添加了这个:

    saveSettings: function () {  
    var jsonObj = ko.mapping.toJSON(this.ViewModel);
    SD.CORP.WS.HedgingEffectivenessSettingsService.SetHedgingEffectivenessSettings(userID, companyID, selectedProductID, jsonObj, saveSettingsOnSucc, saveSettingsOnFaild);

这是我添加的一个例子:

    var settings = JSON.parse(jsonObj);


    window.opener.requestParameters.ReportSetting.ProspectiveTestSettings = settings.ProspectiveTestSettings;
}

但是当我尝试在开启者上使用它时这些对象是空的,如果我尝试JSON.stringify对象,我得到一个“界面未知”错误。

我该如何解决这个问题?

修改

我同时发现实际问题是我从设置窗口向开启窗口分配了一个对象,所以当我关闭设置窗口时,该对象不再存在。

我通过在开启者脚本上添加一个函数来修复它,以便我可以从设置页面调用它,然后使用$ .extend在开启者页面上创建一个深层副本。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用window.postMessage将设置从设置窗口发送到开启者。关于如何使用的文章:https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

开瓶器:

window.addEventListner('message', function(event) {
    var settings = JSON.parse(event.data)
}, false);

设置窗口:

window.postMessage(JSON.stringify(jsonObj));