理解があっているか自信はないのですが、たぶんこういう風にするのだろうということをメモ。
(違うぞ、、という場合はすみませんがコメントお願いします。)
onload後にさせたい処理
次のように .run
フェーズに書く。
(各種のリスナー登録はこのフェーズでやると良い?)
app.js
'use strict';
angular.module('angularJsWindowTestApp', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute'
])
.config(['$routeProvider', function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl'
})
.otherwise({
redirectTo: '/'
});
}])
.run(['$window', function ($window) {
//ここにonload時にさせたい処理
console.log("ロード終了");
$window.applicationCache.update();
}]);
window関数の利用
JavaScriptなので、普通に次のように window
にアクセスできてしまう。
〜
.run(['$http', function ($http) {
addEventListener("online", function() {
applicationCache.update();
}, false);
location.reload();
}]);
だが、AngularJSでそれは推奨されていないので、$window
をDIして利用する。
参考:https://code.angularjs.org/1.2.16/docs/api/ng/service/$window)
〜
.run(['$http', '$window', function ($http, $window) {
$window.addEventListener("online", function() {
$window.applicationCache.update();
}, false);
$window.location.reload();
}]);
setTimeoutのようなことをする
window.setTimeout
のラッパーである $timeout
サービスを利用する。例えばブラウザでのアプリケーション読み込み後、5秒経過したらアラートを表示するには次のようにする。
$timeout
は promise を返すので、処理待ちで固まることはない。
〜
.run(['$window', '$timeout', function ($window, $timeout) {
$timeout(function() {
$window.alert('アラート表示')
}, 5000);
}]);
参考:https://code.angularjs.org/1.2.16/docs/api/ng/service/$timeout