LoginSignup
30
29

More than 5 years have passed since last update.

AngularJSとwindow関数あれこれのメモ

Posted at

理解があっているか自信はないのですが、たぶんこういう風にするのだろうということをメモ。
(違うぞ、、という場合はすみませんがコメントお願いします。)

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

30
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
29