Javascript 只显示1个toastr

Javascript 只显示1个toastr,javascript,html,angularjs,Javascript,Html,Angularjs,我们在应用程序中使用angular-toastr.js。我们在所有编辑表单中使用以下指令: app.directive('serverError',['resourceFactory','spinnerService','toastr',函数(resourceFactory,spinnerService,toastr){ 返回{ 限制:“A”, 控制器:['$scope','$timeout',函数($scope,$timeout){ var errorToastConfig={closeBu

我们在应用程序中使用angular-toastr.js。我们在所有编辑表单中使用以下指令:

app.directive('serverError',['resourceFactory','spinnerService','toastr',函数(resourceFactory,spinnerService,toastr){
返回{
限制:“A”,
控制器:['$scope','$timeout',函数($scope,$timeout){
var errorToastConfig={closeButton:true,timeOut:0,tapToDismiss:true};
$scope.$on('sm:badRequest',函数(事件、数据){
角度.forEach(数据、函数(值、键){
如果(value.message='')value.message='',则'+value.property+'值无效
});
$scope.errors=数据;
//$scope.alertMessage=resourceFactory.getResource('Messages','errorOnForm');
//$scope.alertType='error';
$timeout(函数(){
spinnerService.stopSpinner();
}, 0);
toastr.clear();
var errorMsg=($scope.errors[0]&&&$scope.errors[0]。消息?$scope.errors[0]。消息:resourceFactory.getResource('Messages','errorOnForm');
toastr.error(errorMsg,errorToastConfig);
$scope.disableAction=false;
});

您可以通过将
preventDuplicates
属性设置为
true
来防止具有相同的烤面包堆栈

来自文档:重复项根据其消息与上一个toast匹配 内容

只需将属性添加到您的
errorToastConfig

var errorToastConfig = {closeButton:true,timeOut:0,tapToDismiss:true, preventDuplicates:true};

有关更多信息,请参阅。

您可以通过将
preventdeplicates
属性设置为
true
来防止拥有相同的烤面包堆

来自文档:重复项根据其消息与上一个toast匹配 内容

只需将属性添加到您的
errorToastConfig

var errorToastConfig = {closeButton:true,timeOut:0,tapToDismiss:true, preventDuplicates:true};

有关更多信息,请参阅。

不幸的是,尽管这看起来是一个非常有用的属性,但它不起作用。我认为原因是烤面包机是在不同的范围内创建的,这就是toastr.clear()的原因或者这个额外的属性没有效果。app.js有错误请求的拦截器,就像我刚刚添加到我的原始消息中一样。当我调试时,我可以看到指令中的代码触发了两次,而toasters数组是空的。我不知道这是否有帮助,但您是否尝试过这些其他属性
preventOpenDuplicates
maxOpEng/<代码> >我会尝试的,但是我想我需要知道为什么指令代码会触发两次——这是主要的关注点。我可能有几种形式的指令需要找到。好的,我发现我们的.LayOut.cSHTML表单在页面的中间有如下。产生错误请求的所有表单。问题是我现在需要做什么。我可以从主布局中删除它,还是必须从所有编辑表单中删除服务器错误?事实证明,我不能只从表单中删除它,因为它正在重置一些重要属性,例如DisableAction。但我正在研究一个稍微不同的解决方案now-正在测试它。再次感谢您的帮助。不幸的是,尽管它看起来像是一个非常有用的属性,但它没有起作用。我认为原因是烤面包机是在不同的范围内创建的,这就是为什么toastr.clear()或者这个额外的属性没有效果。app.js有错误请求的拦截器,就像我刚刚添加到我的原始消息中一样。当我调试时,我可以看到指令中的代码触发了两次,而toasters数组是空的。我不知道这是否有帮助,但您是否尝试过这些其他属性
preventOpenDuplicates
maxOpEng/<代码> >我会尝试的,但是我想我需要知道为什么指令代码会触发两次——这是主要的关注点。我可能有几种形式的指令需要找到。好的,我发现我们的.LayOut.cSHTML表单在页面的中间有如下。产生错误请求的所有表单。问题是我现在需要做什么。我可以从主布局中删除它,还是必须从所有编辑表单中删除服务器错误?事实证明,我不能只从表单中删除它,因为它正在重置一些重要属性,例如DisableAction。但我正在研究一个稍微不同的解决方案n正在测试。再次感谢您的帮助。