Javascript AngularJS$mdx27;隐藏

Javascript AngularJS$mdx27;隐藏,javascript,angularjs,angular-material,Javascript,Angularjs,Angular Material,我正在构建一个使用AngularJS和AngularMaterial前端的web应用程序。我想使用$mdToast作为错误通知 我的主应用程序控制器(AppCtrl)中有以下代码: 但是,在另一个$scope中触发错误时,hideDelay过期后,toast并没有隐藏起来 有人知道如何修复此行为吗?您的代码对我来说似乎运行良好。我没有试着从另一个角度来报道这个事件。您可以尝试使用$timeout来隐藏对话框,而不是像我在中那样使用hidelay()函数 更新后的代码如下所示: $rootScop

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

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

但是,在另一个$scope中触发错误时,hideDelay过期后,toast并没有隐藏起来


有人知道如何修复此行为吗?

您的代码对我来说似乎运行良好。我没有试着从另一个角度来报道这个事件。您可以尝试使用
$timeout
来隐藏对话框,而不是像我在中那样使用
hidelay()
函数

更新后的代码如下所示:

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

谢谢你的回答。我可以看到$timout是使用匿名函数中的console.log()触发的,但是$mdToast.hide()似乎对正在显示的toast没有任何作用。。我不知道如何修复此问题。您是否尝试过存储对您创建的toast的引用,然后对该引用调用
hide()
?此方法在中进行了讨论。此外,根据您使用的角度材质的版本,您可能会遇到一段时间以前的问题。您可以尝试更新到更新的版本,看看这是否解决了问题。
$rootScope.$on('httpError', function (event, errorMessage) {
  $mdToast.show(
    $mdToast.simple()
    .textContent(errorMessage.message)
    .position('top right')
  );
  $timeout(function() {
    $mdToast.hide();
  }, 3000);
});