我正在构建一个使用AngularJS和Angular Material前端的Web应用程序。我想使用$ mdToast作为错误通知。

我的主应用程序控制器(AppCtrl)中包含以下代码:

$rootScope.$on('httpError', function (event, errorMessage) {
  $mdToast.show(
    $mdToast.simple()
    .textContent(errorMessage.message)
    .position('top right')
    .hideDelay(3000)
);
});


但是当在另一个$ scope中触发错误时,在hideDelay过期后,吐司并不会隐藏。

有人知道如何解决此问题吗?

最佳答案

您的代码对我来说似乎很好。我没有尝试从另一个范围广播事件。您可以尝试使用$timeout隐藏对话框,而不是像this Plunker中那样使用hideDelay()函数。

更新后的代码如下所示:

$rootScope.$on('httpError', function (event, errorMessage) {
  $mdToast.show(
    $mdToast.simple()
    .textContent(errorMessage.message)
    .position('top right')
  );
  $timeout(function() {
    $mdToast.hide();
  }, 3000);
});

10-06 11:51