AngularJs - Bootstrap - 关闭模态窗口

时间:2014-04-27 00:11:36

标签: javascript angularjs twitter-bootstrap angular-ui-bootstrap

我正在使用angular 1.2和angular-bootstrap模态指令。我有一个Controller1打开一个模态窗口。我在iframe中加载了外部应用程序。当用户完成使用外部应用程序时,该应用程序在调用之前调用returnUrl,参数I。外部应用程序为returnUrl添加了一些参数,因此我可以阅读那里发生的事情(此时并不重要)。

myApp.controller('Controller1', [ '$scope', '$rootScope', '$modal', function($scope, $rootScope, $modal){
    var modalInstance = $modal.open({
        templateUrl : 'modalContent.html',
        controller : 'Controller2',
        backdrop : 'static'
    });
    modalInstance.result.then(function(){
        //
    }, function(){
        $rootScope.loadingScreen.hide();
    });
} ]);

myApp.controller('Controller2', [ '$scope', '$modalInstance', '$rootScope', function($scope, $modalInstance, $rootScope){
    // returning from modal window
    $rootScope.$on('event:return-from-external', function(){
    //never gets here?
        $modalInstance.dismiss('cancel');
    });
    $scope.cancel = function(){
        $modalInstance.dismiss('cancel');
    };
} ]);

要阅读外部应用程序中发生的事情,我创建了一个处理外部应用程序返回的路由器:

myApp.config([ '$routeProvider', function($routeProvider){
    $routeProvider.when('/returnFromModalWindow/:id', {
        templateUrl : 'returnFromModalWindow/returnFromModalWindow-list.tpl.html', //just to show loader
        controller : 'ReturnFromModalWindowController'
    });
} ]);

这个rooter有控制器ReturnFromModalWindowController做一些逻辑,应该关闭模态窗口并返回我的应用程序。

myApp.controller('ReturnFromModalWindowController', [ '$scope', '$routeParams', '$rootScope', function($scope, $routeParams, $rootScope){
    //read parameters
    //do some logic
    //emit to close modal window
    $rootScope.$emit('event:return-from-external');
} ]);

问题是我从未在Controller2中捕获发出的'事件:从外部返回'。 在这种情况下如何关闭模态窗口? $ rootScope。$ on无效或者有更好的方法可以做到这一点吗?

0 个答案:

没有答案