angular-notifyとは
angular-notifyは、通知の表示処理についてのangularjs拡張ライブラリーです。
デモページがあるのでこちらで動作を試してみると分かりやすいです。
ソースコードはgithub上にあります。
angular-notifyの使用方法
notify()
を呼ぶことで通知を表示することができます。
引数にはstring
またはobject
を取ることができます。
objectのパラメータにはたとえば以下のものを指定できます。
パラメータを引数として渡すことで通知の表示の仕方を変えることができます。
- message
- 通知に表示するテキストを指定できます。
- duration
- 通知が表示される時間(ミリ秒)を指定できます。
- position
- 通知の表示される位置を指定できます。値にはright
, center
, left
のみが指定できます。
他にも引数として渡せるパラメータがあるので詳細はREADME.mdを見てください。
通知が自動で非表示にならないようにする方法
それでは本題に入ります。
README.mdを読むと通知を非表示にしないためにはduration
に0
を指定するとありました。
しかし0
にセットしたのに通知が自動的に非表示にされてしまいうまく行きませんでした。
仕方がないのでソースコードを読んでみると、
どうやらangular-notify.jsの21行目が上手くいかない原因のようでした。
args.duration = args.duration ? args.duration : defaultDuration;
0
はfalse
として評価されるため、args.duration
に0
ではなくデフォルト値が入ってしまっていました。
これを回避するには0
の代わりに"0"
を使用するなどが考えられます。
Boolean(String)
はtrue
として評価されるため"0"
を指定すればargs.duration
に"0"
が入ります。
実際に表示を自動的に消す処理は104~108行目にあり、
if (args.duration > 0){
$timeout(function(){
scope.$close();
},args.duration);
}
"0" > 0
はfalse
として評価されるので$timeoutがセットされず自動的に非表示にならないようになります。