从Angular中声明的子窗口调用主窗口中的函数

时间:2013-10-10 21:15:42

标签: javascript angularjs

这个问题让我发疯,我几个小时都找不到任何解决方案。我相信你们可以帮助我。

我的controller.js文件中有控制器,其中包含有关我的页面的所有信息。我在这个页面中有一个按钮,它在一个新的弹出窗口中打开同一页面。一旦用户点击弹出页面上的按钮,我试图在主窗口中调用一个函数。

我的controller.js

.controller('rackLayoutController', ['$scope', 'appService', 'rackLayoutService', 'siteService', '$location', '$log', '$sanitize', '$window', '$timeout',
function ($scope, appService, rackLayoutService, siteService, $location, $log, $window, $timeout) {

$( window ).ready(function() {
    function refreshPopout(){
        $(window).ready(function(){
            console.log("readyyyyy");
            setTimeout(function () {

                window.location.reload();

            }, 1000);

            });
        }
    });

    $scope.$on('updateRack', function () {
        console.log("BROAD 1");
        window.opener.refreshPopout();    

    })

当用户点击按钮时,我正在调用broadcast updateRack并且正在打印我的log,这很好,但功能无效。

我收到错误:

TypeError: Object [object global] has no method 'refreshPopout'

由于

1 个答案:

答案 0 :(得分:1)

$( window ).ready(function() {
    function refreshPopout(){

当你调用它时,refreshPopout不是全局的。

尝试:

$( window ).ready(function() {
    window.refreshPopout = function(){