模态关闭

时间:2015-10-26 13:33:13

标签: angularjs angular-ui

我通过路由将控制器绑定到我的视图。

App.js中的示例我有以下内容:

when('/about', { templateUrl: 'views/about.html', controller: 'appAboutCtrl' }).

我有另一个控制器用于Modal特定操作。我需要这个,因为它是一个跨页面应用的登录操作,因此,它是自己的控制器而不是在每个控制器中重复登录功能。

我的模态执行它应该做的事情,但是当我关闭它时,我需要它来更新页面上的$ scope以显示/隐藏项目,方法是设置类似于:

$scope.isLoggedIn = true;

但是,范围未更新。我在这里看到过类似的内容:https://github.com/angular-ui/bootstrap/issues/2110#issuecomment-54551321但是考虑到我登录的复杂性,我需要它在自己的控制器中......控制器驱动我的视图。

这是调用我的Modal和控制器特定模式的控制器绑定到我打开它的视图(about.html和appAboutCtrl):

// Open Modal for Login
$scope.login = function () {
    var modalInstance = $modal.open({
        templateUrl: 'templates/login.html',
        controller: 'appLoginCtrl',
        size: 'lg'
    });
}

这是我尝试在appLoginCtrl中设置模态关闭的范围:

$scope.ok = function () {
    $modalInstance.close();
     $scope.isLoggedIn = true;
};

$scope.cancel = function () {
    $modalInstance.dismiss('cancel');
     $scope.isLoggedIn = true;
};

我可以在模态关闭时重新加载视图,但不能按如下方式设置$ scope:

$scope.ok = function () {
    $modalInstance.close();
    $route.reload();
};

$scope.cancel = function () {
    $modalInstance.dismiss('cancel');
    $route.reload();
};

如何在Modal上设置$ scope关闭,这样当我关闭模态时,我的视图会记录更改?我的$ scope与ng-show相关联,以便在登录时显示/隐藏项目。

1 个答案:

答案 0 :(得分:2)

您可以使用resolve选项绑定变量。

var modalInstance = $modal.open({
        templateUrl: 'templates/login.html',
        controller: 'appLoginCtrl',
        size: 'lg'
        resolve: {
            isLoggedIn: function () {
              return $scope.isLoggedIn;
            }
        }
});

或者您可以将父控制器的范围传递给模态范围

var modalInstance = $modal.open({
        templateUrl: 'templates/login.html',
        controller: 'appLoginCtrl',
        size: 'lg',
        scope: $scope
});