HTMLに、Angular.js データ モデルの「 data.id 」の値を初期化する「ng-init」ディレクティブがあります。今のところ、これがどのように機能するかを変更できないとしましょう。
ここで、ページが読み込まれたらすぐに HTTP リクエストを作成したいと考えています。ここで、URL はこの data.id 値に依存します。これまでのところ、次のように動作しているようです。
app.controller('MainCtrl', function ($scope, $http, $timeout) {
"use strict";
$scope.data = {};
$timeout(function () {
$http.get("/api/Something?id=" + $scope.data.id);
}, 0);
});
ただし、タイムアウトがゼロのタイマーを使用するのは扱いにくいようです。(そして、$timeout コードを省略して、単純に $http.get を直接呼び出した場合、$scope.data.id はもちろん未定義です)。
$http リクエストを発行する前に ng-init が実行されるまで待つより良い方法はありますか? また、上記のタイムアウトベースのコードは、すべての場合/すべてのブラウザーなどで動作することが保証されていますか?