无法在模式关闭时更新 $scope

Can't update $scope on modal close

我有一个控制器通过路由绑定到我的视图。

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

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

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

我的模式做了它应该做的事情,但是当我关闭它时,我需要它通过设置类似于以下内容的方式将页面上的 $scope 更新为 show/hide 一个项目:

$scope.isLoggedIn = true;

但是,范围没有更新。我在这里看到过这样的事情:https://github.com/angular-ui/bootstrap/issues/2110#issuecomment-54551321 但考虑到我登录的复杂性,我需要它在它自己的控制器中......与驱动我的视图的控制器分开。

这是对我的模态和控制器中特定模态的调用,该模态与我从中打开它的视图相关联(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();
};

如何在模态关闭时设置 $scope,以便在我关闭模态时,我的视图会记录更改?我的 $scope 绑定到 show/hide 登录项目的 ng-show。

您可以使用解析选项来绑定变量。

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
});