AngularJS 服务(Service)
AngularJS では、独自のサービスを作成するか、組み込みサービスを使用できます。
サービスとは何ですか?
AngularJS において、サービスは関数またはオブジェクトであり、AngularJS アプリケーション内で使用できます。
AngularJSには30以上のサービスが組み込まれています。
有个$locationサービスは、現在のページのURLアドレスを返すことができます。
实例
app.controller('customersCtrl', function($scope, $location) {
$scope.myUrl = $location.absUrl();
});
尝试一下 »
注意$locationサービスは controller にパラメータとして渡されます。それを使用するには、controller 内で定義する必要があります。
なぜサービスを使用するのか?
多くのサービス、例えば $location サービスでは、DOM に存在するオブジェクトを使用できます。これは window.location オブジェクトに似ていますが、window.location オブジェクトは AngularJS アプリケーションにおいていくつかの制限があります。
AngularJS は常にアプリケーションを監視し、イベントの変化を処理します。AngularJS は使用します。$location服务比使用window.locationオブジェクトの方が良い。
$location vs window.location
| window.location | $location.service | |
|---|---|---|
| 目的 | 現在のブラウザ位置に対する読み書き操作を許可します。 | 現在のブラウザ位置に対する読み書き操作を許可します。 |
| API | 読み書きできるオブジェクトを公開する | jQueryスタイルのリーダー/ライターを公開する |
| AngularJS アプリケーションのライフサイクル内でアプリケーションと統合するかどうか。 | 否 | アプリケーションのライフサイクル内のすべての段階を取得でき、$watch と統合されます。 |
| HTML5 API とのシームレスな統合かどうか。 | 否 | (低機能ブラウザへのグレースフルデグラデーション)である |
| アプリケーションのコンテキストに関連するかどうか | 否,window.location.path返回"/docroot/actual/path" | はい、$location.path() は "/actual/path" を返します。 |
$http 服务
$httpAngularJS アプリケーションで最もよく使用されるサービスです。サービスはサーバーにリクエストを送信し、アプリケーションはサーバーから送信されたデータに応答します。
实例
使用$httpサービスはサーバーにデータをリクエストする:
app.controller('myCtrl', function($scope, $http) {
$http.get("welcome.htm").then(function (response) {
$scope.myWelcome = response.data;
});
});
尝试一下 »
以上は非常に簡単な$httpサービスインスタンス、詳細$httpサービスの応用についてはこちらを参照してくださいAngularJS Http 教程。
$timeout 服务
AngularJS $timeoutサービスはJSに対応しています window.setTimeout函数。
实例
2秒後に情報を表示:
app.controller('myCtrl', function($scope, $timeout) {
$scope.myHeader = "Hello World!";
$timeout(function () {
$scope.myHeader = "How are you today?";
}, 2000);
});
尝试一下 »
$interval 服务
AngularJS $intervalサービスはJSに対応していますwindow.setInterval函数。
实例
毎秒情報を表示:
app.controller('myCtrl', function($scope, $interval) {
$scope.theTime = new Date().toLocaleTimeString();
$interval(function () {
$scope.theTime = new Date().toLocaleTimeString();
}, 1000);
});
尝试一下 »
カスタムサービスの作成
カスタムサービスを作成し、モジュールにリンクできます:
という名前で作成hexafyのサービス:
this.myFunc = function (x) {
return x.toString(16);
}
});
カスタムサービスを使用するには、コントローラーを定義する際に独立して追加し、依存関係を設定する必要があります:
实例
カスタムサービスの使用hexafy数値を16進数に変換する:
$scope.hex = hexafy.myFunc(255);
});
尝试一下 »
フィルター内で、カスタムサービスを使用する
カスタムサービスを作成してアプリケーションに接続すると、コントローラー、ディレクティブ、フィルター、または他のサービスでそれを使用できます。
フィルタ内myFormat中使用服务hexafy:
return function(x) {
return hexafy.myFunc(x);
};
}]);
尝试一下 »
オブジェクト配列から値を取得する際には、フィルターを使用できます:
其他扩展