无法在模式关闭时更新 $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
});
我有一个控制器通过路由绑定到我的视图。
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
});