Angular 模态服务不会使背景变灰
Angular Modal Service does not gray out background
我在 plunkur 有以下样本
click here to open link
var app = angular.module('App', ['ui.bootstrap']);
try {
app.service('loginModalService', function ($modal, $rootScope) {
function assignCurrentUser(user) {
$rootScope.currentUser = user;
return user;
}
return function () {
var instance = $modal.open({
templateUrl: 'loginModalTemplate.html',
controller: 'LoginModalCtrl',
controllerAs: 'LoginModalCtrl',
windowClass: 'vertical-center',
backdrop: true,
backdrop: 'static',
sticky: true
})
return instance.result.then(assignCurrentUser);
};
});
} catch (e) {
alert("Error --- " + e.message);
}
//UsersAPI is service to validate on server
app.controller('LoginModalCtrl', function ($scope, loginModalService) {
this.cancel = $scope.$dismiss;
$scope.showModal = function () {
loginModalService()
.then(function () {
alert("OK Selected ");
//return $state.go(toState.name, toParams);
})
.catch(function () {
console.log("User Cancelled Login hence Navigation Cancelled ");
//return $state.go('home');
});
}
this.submit = function (email, password) {
// UsersApi.login(email, password).then(function (user) {
// $scope.$close(user);
// });
$scope.$close("abc");
};
});
我无法使用淡入淡出来尝试灰色背景。
如果我将淡入淡出添加到 class,模式不会打开
我错过了什么?
另外为什么不在屏幕中央显示自己?
在 Bootstrap 3.3.1 中,修改了 .modal-backdrop CSS 属性。此更改导致模态背景具有绝对定位,而不是固定定位且没有底部 属性 设置。 Bootstrap JS 文件没有使用底部 属性,而是注入了一个内联样式,将模态背景的高度设置为视口的高度。 UI-Bootstrap 0.12.0 中的模态服务不会在模态背景上注入高度,因此背景存在,但它有没有高度,你看不到它。
有两种方法可以解决这个问题:
- 您可以按照@sal-niro 的建议进行操作,并使用旧版本的 Bootstrap CSS、 或
- 您只需将以下内容添加到您的自定义样式中:
CSS:
.modal-backdrop {
bottom:0;
}
要回答关于 如何在 window 中垂直居中模式 的第二个问题,您也可以使用一些自定义 CSS 来完成此操作.仅供参考,此方法基于 CSS 转换,因此 在 IE8 中不受支持,仅在带有 -ms- 前缀的 IE9 中受支持。
.modal.fade .modal-dialog, .modal.in .modal-dialog {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
}
.modal-content {
position: absolute;
top:50%;
-ms-transform: translate(0,-50%);
-moz-transform: translate(0,-50%);
-webkit-transform: translate(0,-50%);
transform: translate(0,-50%);
width:100%;
}
Plunker Demo
在更新的演示中,除了我稍微修改了模板并将其添加到模板缓存之外,我使用了您的代码。
我在 plunkur 有以下样本 click here to open link
var app = angular.module('App', ['ui.bootstrap']);
try {
app.service('loginModalService', function ($modal, $rootScope) {
function assignCurrentUser(user) {
$rootScope.currentUser = user;
return user;
}
return function () {
var instance = $modal.open({
templateUrl: 'loginModalTemplate.html',
controller: 'LoginModalCtrl',
controllerAs: 'LoginModalCtrl',
windowClass: 'vertical-center',
backdrop: true,
backdrop: 'static',
sticky: true
})
return instance.result.then(assignCurrentUser);
};
});
} catch (e) {
alert("Error --- " + e.message);
}
//UsersAPI is service to validate on server
app.controller('LoginModalCtrl', function ($scope, loginModalService) {
this.cancel = $scope.$dismiss;
$scope.showModal = function () {
loginModalService()
.then(function () {
alert("OK Selected ");
//return $state.go(toState.name, toParams);
})
.catch(function () {
console.log("User Cancelled Login hence Navigation Cancelled ");
//return $state.go('home');
});
}
this.submit = function (email, password) {
// UsersApi.login(email, password).then(function (user) {
// $scope.$close(user);
// });
$scope.$close("abc");
};
});
我无法使用淡入淡出来尝试灰色背景。 如果我将淡入淡出添加到 class,模式不会打开
我错过了什么?
另外为什么不在屏幕中央显示自己?
在 Bootstrap 3.3.1 中,修改了 .modal-backdrop CSS 属性。此更改导致模态背景具有绝对定位,而不是固定定位且没有底部 属性 设置。 Bootstrap JS 文件没有使用底部 属性,而是注入了一个内联样式,将模态背景的高度设置为视口的高度。 UI-Bootstrap 0.12.0 中的模态服务不会在模态背景上注入高度,因此背景存在,但它有没有高度,你看不到它。
有两种方法可以解决这个问题:
- 您可以按照@sal-niro 的建议进行操作,并使用旧版本的 Bootstrap CSS、 或
- 您只需将以下内容添加到您的自定义样式中:
CSS:
.modal-backdrop {
bottom:0;
}
要回答关于 如何在 window 中垂直居中模式 的第二个问题,您也可以使用一些自定义 CSS 来完成此操作.仅供参考,此方法基于 CSS 转换,因此 在 IE8 中不受支持,仅在带有 -ms- 前缀的 IE9 中受支持。
.modal.fade .modal-dialog, .modal.in .modal-dialog {
position: absolute;
top: 0;
right: 0;
left: 0;
bottom: 0;
}
.modal-content {
position: absolute;
top:50%;
-ms-transform: translate(0,-50%);
-moz-transform: translate(0,-50%);
-webkit-transform: translate(0,-50%);
transform: translate(0,-50%);
width:100%;
}
Plunker Demo
在更新的演示中,除了我稍微修改了模板并将其添加到模板缓存之外,我使用了您的代码。