- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想设置一个 httpInterceptor 以在 http 请求失败时显示一个常见的模式对话框。我正在使用 https://angular-ui.github.io/bootstrap/对于模态对话框。
我试过
app.config(function ($httpProvider, $uibModal) { ...
app.config(function ($httpProvider, $uibModalProvider) {
var modalInstance = $uibModalProvider.open(
最佳答案
请看以下示例:
(function(angular) {
'use strict';
var module = angular.module('app', ['ngAnimate', 'ui.bootstrap']);
module.controller('appController', ['$http', '$log', function($http, $log) {
var vm = this;
vm.sendRequest = sendRequest;
function sendRequest(){
$log.info('Try sending a request');
$http.get('/fake/');
}
}]);
module.controller('ModalInstanceCtrl', ['$scope', '$uibModalInstance', function ($scope, $uibModalInstance) {
$scope.ok = function () {
$uibModalInstance.dismiss('cancel');
};
}]);
module.factory('myHttpInterceptor', ['$log', '$injector', function($log, $injector) {
var interceptor = {
'responseError': function(config) {
$log.info('Request error');
// injecting $uibModal directly cause Circular Dependency error
// following method is a fix of it
$injector.get('$uibModal').open({
templateUrl: 'myModalContent.html',
controller: 'ModalInstanceCtrl',
size: 'sm'
});
return config;
}
};
return interceptor;
}]);
module.config(['$httpProvider', function($httpProvider) {
$httpProvider.interceptors.push('myHttpInterceptor');
}]);
})(window.angular);
body { padding: 20px; }
<!doctype html>
<html lang="en">
<head>
<title>Interceptor & $uibModal sample</title>
<meta charset="UTF-8">
<!-- AngularJS -->
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0/angular-animate.js"></script>
<script src="//angular-ui.github.io/bootstrap/ui-bootstrap-tpls-1.2.4.js"></script>
<!-- Bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" >
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" >
</head>
<body ng-app="app">
<div class="panel panel-default" ng-controller="appController as vm">
<script type="text/ng-template" id="myModalContent.html">
<div class="modal-header">
<h3 class="modal-title">Error!</h3>
</div>
<div class="modal-body">
Hello
</div>
<div class="modal-footer">
<button class="btn btn-primary" type="button" ng-click="ok()">OK</button>
</div>
</script>
<div class="panel-heading">
Send failing request
</div>
<div class="panel-body">
<button type="button" class="btn btn-primary" ng-click="vm.sendRequest()">Send request</button>
</div>
</div>
</body>
</html>
关于Angularjs - $uibModal httpProvider 拦截器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35951049/
我有各种菜单项,它们在单击其中任何一个时都使用相同的 uibmodal。仅对于其中一个菜单选项,我希望 uibmodal 显示为较小的尺寸。我尝试了以下方法: $scope.profile = fun
我有各种菜单项,它们在单击其中任何一个时都使用相同的 uibmodal。仅对于其中一个菜单选项,我希望 uibmodal 显示为较小的尺寸。我尝试了以下方法: $scope.profile = fun
我正在使用 Bootstrap 的 $uibModal 在我的网络应用程序中制作表单。一切正常,只是在显示对话框后我无法关闭它。 我花了两天时间试图不在这里发布这样一个简单的问题,尤其是当我收到的相同
我一直在尝试使用工厂中的 uibModal,而不是在我的 Controller 中使用它。出现对话框,单击“确定”后字段数据返回到服务,但是,我不知道如何将数据返回到我的 Controller ,将数
我知道有很多关于这个问题的话题,但我尝试按照提供的解决方案进行操作,但没有成功。 我遵循的那个解决了错误Unknown provider: $uibModalInstanceProvider,是@Ge
我在模态中的模态上遇到问题。我需要让第二个模态位于第一个模态的顶部,但发生的情况是,第二个模态加载在第一个模态的后面。请帮忙。谢谢 用于打开模式的片段。 $uibModal.open({ te
我正在尝试集成 Angular 引导模式形式, 这是我的 Controller angular.module('app').controller('groupController',['groupSe
我想设置一个 httpInterceptor 以在 http 请求失败时显示一个常见的模式对话框。我正在使用 https://angular-ui.github.io/bootstrap/对于模态对话
angular .module('angProj') .controller('UserCtrl', ['$scope', '$uibModal', function ($sc
我开始学习如何使用 jasmine 进行单元测试。我在互联网上阅读了很多内容,但我无法解决我的问题。 我有一个带有 Controller 的指令。当我单击某个元素时,该 Controller 正在使用
我有一项从服务器获取数据的服务。成功检索数据后,我将传递给指令中的 $uimodal 。我的代码如下所述 问题是当我第一次运行我的应用程序时,控制台日志显示如下结果 在//输出 >> 之外调试 siz
我试图将 $uibModal 注入(inject)到我的项目中,但是当 Controller 加载时,我收到以下错误: Error: [$injector:unpr] Unknown provider
我有以下代码: vm.data = [{name: 'test-1'},{name: 'test-2'}]; function addRecords(data) { vm.data.push(
你能告诉我我的代码有什么问题吗?我得到了初始 HTML 页面,但是当我单击“打开”时,没有任何反应。甚至控制台也不会记录错误或任何其他更改。 应用程序.js var app = angular.mod
我想制作$uibModal下药时模态透明,停止拖动时模态不透明。 现在,我尝试了 jQuery fadeTo()和 fadeIn()可拖动停止事件的方法和 mouseup() 方法。模态变得透明但不会
我将 .draggable() 放在我的模式上,但它们只在第二次调用时起作用。模态是从服务文件中调用的。 服务文件: function callWarningModalService(data) {
尝试关闭由 $uibModal.open() 创建的模态窗口时,我收到 close is not a function 我已将问题减少到最少的代码: var app = angular.mod
我想不出正常的标题。对此感到抱歉。 所以问题是,在一个大项目中,具有大的业务逻辑,有很多模式。每个新的模态都是相同的代码,几乎没有什么变化,比如 templateUrl、 Controller 之类的
我创建了一个 AngularJs 指令,它将焦点设置到 html 元素。但它不适用于 $uibModal 元素: angular.module('ui.bootstrap.demo') .di
我在使用 ui.bootstrap.modal 时遇到这个错误: Error: $uibModal is undefined 模块: (function(angular) { /**
我是一名优秀的程序员,十分优秀!