9

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 が実行されるまで待つより良い方法はありますか? また、上記のタイムアウトベースのコードは、すべての場合/すべてのブラウザーなどで動作することが保証されていますか?

4

1 に答える 1

5

時計を使ってみることができます

$scope.$watch('data.id',function(newValue,oldValue) {
  if(newValue) {
    $http.get("/api/Something?id=" + $scope.data.id);
  }
});
于 2013-09-05T07:36:31.070 に答える