2016-07-08 8 views
2

AngularJSとAngular Materialフロントエンドを使用するWebアプリケーションを構築しています。エラーの通知として$ mdToastを使用したいと思います。

は、私は私のメインのアプリケーションコントローラ(AppCtrl)に次のコードを持っている:

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

しかし、何とかトーストは、エラーが別の$スコープにトリガーされたときにhideDelayプロパティの有効期限が切れた後に非表示にしていません。

誰かがこの動作を修正する方法を知っていますか?

答えて

1

コードが正常に動作しているようです。私は別のスコープからイベントをブロードキャストしようとしなかった。 this Plunkerのように$timeoutを使用して、hideDelay()関数の代わりにダイアログを非表示にすることができます。

更新されたコードは次のようになります:あなたの答えのworsnupdため

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

感謝。私は$ timoutが匿名関数のconsole.log()を使って起動されているのを見ることができますが、$ mdToast.hide()は表示されているトーストに何もしていないようです。これを修正する。 – nobody

+0

作成したトーストへの参照を格納し、その参照で 'hide()'を呼び出してみましたか?このメソッドについては、[このSO post](http://stackoverflow.com/questions/26927747/how-to-hide-angular-material-mdtoast)で説明しています。 – worsnupd

+1

また、使用しているアンギュラマテリアルのバージョンによっては、しばらく前から[既知のバグ](https://github.com/angular/material/issues/650)が発生している可能性があります。より最新のバージョンにアップデートして、問題が解決したかどうかを確認することができます。 – worsnupd

関連する問題