你好我对前端开发很新,我试图将一些数据从我的父窗口传递到我的子窗口,但它只是作为[object] [object]
JS
$scope.openLargeGraph = function() {
var childWindow = window.open('graphs.html', "", "width=950,height=850");
var testData = $scope.data;
childWindow.data = testData;
childWindow.document.write(childWindow.data);
console.log(testData)
console.log(childWindow.data);
// childWindowForGraph.moveTo(300, 50);
};
答案 0 :(得分:3)
您可以在打开窗口之前将数据存储在window.localStorage
中。然后在加载新窗口时读回来。
参见在线演示 - https://plnkr.co/edit/nEjjzLC4pVvg1nOsXlgA?p=preview
index.html
app.controller('MainCtrl', function($scope) {
$scope.data = {
layout: 'spring',
nodes: [{name:'Node 1', x: 2, y: 4 },{name:'Node 2', x: 2, y: 4 }]
};
$scope.openLargeGraph = function() {
// Save data on local storage
window.localStorage['graph:data'] = angular.toJson($scope.data);
window.open('graphs.html', "", "width=950,height=850");
};
});
<强> graphs.html 强>
app.controller('MainCtrl', function($scope) {
$scope.data = angular.fromJson(window.localStorage['graph:data']);
});
https://plnkr.co/edit/nEjjzLC4pVvg1nOsXlgA?p=preview
请注意,这不是最佳做法,如果可能,请使用相同的页面并异步更改视图(google angular SPA application )
我猜你想要隔离你的应用程序的某些部分,将图形渲染到不同的窗口,希望这可以帮助你实现你想要的东西
答案 1 :(得分:0)
如果你这样访问它只会显示你作为对象格式,请在你的控制台中尝试这样
console.log(childWindow.data[0]);
console.log(childWindow.data[1]);
然后你可以看到第一个控制台的graphs.html和宽度= 950,第二个高度= 850
答案 2 :(得分:0)
您可以使用window.postMessage在Windows之间传输数据:
//graphs.html
window.addEventListener("message", function(event){
document.write(event.data);
}, false);
然后在graphs.html中添加消息事件监听器:
db.users.find({"user":{"login":"tester"}});