我需要将$ scope从我父窗口传递到新窗口。我在我的javascript函数中为新窗口编写了$ window.open()。但是在新窗口中,我没有获得$ scope。下面我给出了代码。
1)JS文件
$scope.mainPageNewsArchive = data.newsArchiveList;
var myWindow1 = $window.open("resources/partials/NewFile.html", "News Archive", 'toolbar=0,scrollbars=1,location=0,status=0,menubar=0,resizable=1,width=650, height=550,left = 300,top=100');
2)NewFile.html
<div>
<table border="0" cellspacing=0 cellpadding=2 width="100%" id="tkm">
<tbody>
<tr x-ng-repeat="newsArchive in mainPageNewsArchive track by $index">
<td align=left >{{newsArchive.createDate}}</td>
<td> </td>
<td align=left><a href="" ng-click="showNewsItem(newsArchive.id)" title="Click for more detail">{{newsArchive.title}}</a>
</td>
</tr>
</tbody>
</table>
</div>
答案 0 :(得分:3)
由主窗口打开的窗口在架构上将无法与其父窗口共享相同的范围。因为角度范围是根据DOM元素定义的。但是您可以使用window.open()方法返回的窗口对象传递数据
angular.module('originalModule').service('popupService', function(someOtherDataService) {
var popupWindow = window.open('popupWindow.html');
popupWindow.mySharedData = someOtherDataService.importantData;
});
初始化辅助“弹出”角度应用程序后,它可以通过读取window.mySharedData来引用共享数据。
或强>
您可以引用新生成的窗口的rootscope,然后通过父窗口的子窗口范围传递事件。
父:
var newWindowRef = $window.open("", "New Window", "width=1280,height=890,resizable=1");
var newWindowRootScope = newWindowRef.angular.element("#MY_ROOT_APP_ELEMENT_ID").scope();
newWindowRootScope.$broadcast("INTER_WINDOW_DATA_TRANSFER", {someData : "I'm data"});
子:
$rootScope.$on("INTER_WINDOW_DATA_TRANSFER", function (data, args) {
console.log("DATA RECEIVED: " + args.someData);
});
答案 1 :(得分:2)
您可以在父控制器中输入以下内容来获取父作用域的副本:
$window.ScopeToShare = $scope;
这在用于子窗口的控制器中:
if($window.parent != null)
{
ParentScope = $window.opener.ScopeToShare;
}