- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在有一个拦截器来处理我的 $http 错误。它看起来有点像这样:
.factory('RequestsErrorHandler', ['$q', '$injector', '$rootScope', 'ErrorService', function ($q, $injector, $rootScope, service) {
var specificallyHandled = function (specificallyHandledBlock) {
specificallyHandleInProgress = true;
try {
return specificallyHandledBlock();
} finally {
specificallyHandleInProgress = false;
}
};
var responseError = function (rejection) {
// Create the variable for handling errors
var shouldHandle = (rejection && rejection.config && rejection.config.headers && rejection.config.headers['handle-generic-errors']);
// If we should handle an error
if (shouldHandle) {
// Get our error
var error = service.process(rejection);
// Assign our error to the rootScope
$rootScope.serverError = error;
// Redirect to our error screen
$injector.get('$state').transitionTo('error');
}
// Fallback, reject the promise
return $q.reject(rejection);
};
return {
specificallyHandled: specificallyHandled,
responseError: responseError
};
}])
.config(['$httpProvider', '$provide', function ($httpProvider, $provide) {
$httpProvider.interceptors.push('RequestsErrorHandler'); // Add our interceptor to handle http requests
// Decorate $http to add a special header by default
function addHeaderToConfig(config) {
config = config || {};
config.headers = config.headers || {};
// Add the header unless user asked to handle errors himself
if (!specificallyHandleInProgress) {
config.headers['handle-generic-errors'] = true;
}
return config;
}
// The rest here is mostly boilerplate needed to decorate $http safely
$provide.decorator('$http', ['$delegate', function ($delegate) {
function decorateRegularCall(method) {
return function (url, config) {
return $delegate[method](url, addHeaderToConfig(config));
};
}
function decorateDataCall(method) {
return function (url, data, config) {
return $delegate[method](url, data, addHeaderToConfig(config));
};
}
function copyNotOverriddenAttributes(newHttp) {
for (var attr in $delegate) {
if (!newHttp.hasOwnProperty(attr)) {
if (typeof ($delegate[attr]) === 'function') {
newHttp[attr] = function () {
return $delegate.apply($delegate, arguments);
};
} else {
newHttp[attr] = $delegate[attr];
}
}
}
}
var newHttp = function (config) {
return $delegate(addHeaderToConfig(config));
};
newHttp.get = decorateRegularCall('get');
newHttp.delete = decorateRegularCall('delete');
newHttp.head = decorateRegularCall('head');
newHttp.jsonp = decorateRegularCall('jsonp');
newHttp.post = decorateDataCall('post');
newHttp.put = decorateDataCall('put');
copyNotOverriddenAttributes(newHttp);
return newHttp;
}]);
}])
.factory('RequestsErrorHandler', ['ErrorService', 'toastr', function (service, toastr) {
var specificallyHandled = function (specificallyHandledBlock) {
specificallyHandleInProgress = true;
try {
return specificallyHandledBlock();
} finally {
specificallyHandleInProgress = false;
}
};
var responseError = function (rejection) {
// Create the variable for handling errors
var shouldHandle = (rejection && rejection.config && rejection.config.headers && rejection.config.headers['handle-generic-errors']);
// If we should handle an error
if (shouldHandle) {
// Get our error
var error = service.process(rejection);
// Display the error
toastr.error(error);
}
// Fallback, reject the promise
return $q.reject(rejection);
};
return {
specificallyHandled: specificallyHandled,
responseError: responseError
};
}])
Circular dependency found: $http <- $templateRequest <- $$animateQueue <- $animate <- toastr <- RequestsErrorHandler <- $http <- $templateFactory <- $view <- $state
我不确定如何解决这个问题,有其他人知道吗?
最佳答案
有两种简单的方法可以解决这种循环依赖问题
toastr
服务(或在使用 toastr 的服务中),在根范围内监听这些事件并显示它们。 $injector.get('toastr')
. 关于AngularJS httpInterceptors 和 toastr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31946379/
如何在 toastr 中显示多行错误消息? 我已经格式化了我的错误消息,如下所示 "Please fix the following: \r\nFirst Name is required\r\nLa
在 toastr 消息中,我有几个图标在彼此之上。这是它的样子: 我的代码很简单,我在 Ajax 调用后使用 toastr: success : function(reponse) {
有什么办法可以改变吗?我尝试将 toastClass 定义为不透明度设置为 1 的类,但没有看到任何变化: .toast-style{ opacity: 1; } toastr.options.
我正在使用 ngx-toastr图书馆。我正在启动位于屏幕顶部中央的消息,如下所示: @Injectable() export class MessageService { construct
我正在使用 Angular toastr 并且我坚持在隐藏上一个 toastr 和显示下一个 toastr 之间传递延迟。一次应该只有一个 toastr 。我隐藏并显示它,但没有视觉差异,并且 toa
我正在使用 toastr jquery 插件。下面是链接 https://github.com/scottoffen/jquery.toaster 我在这里面临两个问题 目前点击按钮时会显示多个通知(
我正在尝试 toastr,但我不断收到一个奇怪的 TypeError,这对我来说没有任何意义。 TypeError: Cannot read property 'extend' of undefine
我正在使用 angular2-toaster在我的 Angular 应用中 很简单, 在组件模板中定义 toastr 容器 并且您使用 ToasterService 类型的 toasterServi
我想使用toastr来通知用户。我已关注this设置指南。但我收到错误消息:Uncaught TypeError: toastr is not a function。我查看了网络选项卡,文件加载正确。
我正在尝试将 toastr 带入我的应用程序中。我做了一些非常简单的事情: bundles.Add(new ScriptBundle("~/Content/example-scripts")
shared.module.ts import { animate, state, style, transition, trigger } from '@angular/animations'; i
我在 Angular 6 中使用 ngx-toastr 进行 http 错误通知,就像在 httpInterceptor 中注入(inject) ToastrService export cl
我安装了react-toastr并集成了示例代码。 import React from 'react' import { ToastContainer } from 'react-toastr'; c
下面的代码会弹出一个 toastr : function showMessage(code, type) { ConfigService.getErrorMessage(cod
我正在使用 typescript 创建一个非常简单的 Web 应用程序。现在,它要做的就是创建一个矩形并显示该区域的信息提示。不幸的是, toast 从未出现。该代码行已执行,并且 Internet
我喜欢用 toastr 做的事情,但我似乎无法让它发挥作用。 来自官方页面... (1) Link to toastr.css (2) Link to toastr.js (3) Use toastr
从应用程序注销后,我必须显示 toastr 。这就是我正在尝试的。在这里,我在注销方法后调用 toastr 。 _this.logout().then({ success: function (r
我是 Angular js 的新手。我正在尝试显示错误消息 View toaster() .我在谷歌上搜索,但没有找到正确的结果。当我点击 cancel()按钮,我会收到一条错误消息,提示 toast
我正在尝试使用 Toastr 通知 ( https://github.com/CodeSeven/toastr )。它们工作正常,但问题是它们只出现在右上角。我可以更改位置的任何内容,但它们将始终显示
我正在使用 toastr js 插件 - toastr - 并更改了 css 颜色,但是,我不知道如何创建正确的 png/base64 部分? 原文: .toast-info { backgrou
我是一名优秀的程序员,十分优秀!