anglarjsサービス(service)


サービスは何ですか?
angglarjsサービスは実は関数かオブジェクトです.私たちはanglarjsの応用に使えます.
たとえば:
$timeoutサービスまたは$intervalサービス
$timeoutサービスはjavascriptのsetTimeout関数に相当します.設定された時間に私達が作成したコードを実行します.
たとえば:
{{myInfo}}
var app = angular.module("myApp",[]); app.controller("myCtrl",["$scope","$timeout",myCtrl]); function myCtrl($scope,$timeout){ $scope.myInfo = "zhang"; $timeout(function(){ $scope.myInfo = " " + $scope.myInfo + "!"; },1000); }
上記の例では、1秒前に表示されたのはzhangですが、1秒後にプログラムが実行されるのは$timeoutの関数、つまり「こんにちは」です.したがって、javascriptのsetTimeoutは設定された時間内に作成された$scope.myInfo=「こんにちは」+myInfoです.このコードは一回だけ実行されますので、指定された時間内にある操作を繰り返すことはありません.
$intervalサービス
{{newTime}}
var app = angular.module("myApp",[]); app.controller("myCtrl",["$scope","$interval",myCtrl]); function myCtrl($scope,$interval){ $scope.newTime = new Date().toLocaleTimeString(); $interval(function(){ $scope.newTime = new Date().toLocaleTimeString(); },1000); }
上のコードを実行して、初期化は現在の時間で、一秒に一回更新します.そうすると、現在のローカル時間を追跡して表示します.
toLocaleTimeString()はjavascriptの方法であり、ローカル時間に応じてDateオブジェクトの時間部分を文字列に変換して結果を返すことができる.
anglarjsではサービスはこの二つだけではなく、anglarjsの中に他にもたくさんの内蔵サービスがあります.マニュアルを見ることができます.
カスタムサービスの作成
カスタムサービスを作成するということは、私たちはangglarjsの中の内蔵サービスを利用しないで、自分でサービスを作って、私たちのモジュールにリンクします.
たとえば:
{{myService}}
var app = angular.module("myApp",[]); app.service("serviceName",function(){ this.myFunc = function(x){ return x.toString(16); } }); app.controller("myCtrl",["$scope","serviceName",myCtrl]); function myCtrl($scope,serviceName){ $scope.myService = serviceName.myFunc(244); }
上のコードの結果はf 4です.上の例のコードを解剖してみます.カスタムサービスを作成するには、service()という方法を使う必要があります.この例で最初のパラメータはサービスの名前です.第二のパラメータは私たちが作成したこのパラメータにどのような行動ができるかを決定します.私たちはこの自分で作ったサービスを呼び出すと、どのような動作を実行できますか?実は上のコードを外して書いたら、もっとはっきりします.
function(){
this.myFunc = function(x){
     return //      
   }
}
それを単独で取り出すともっとはっきりしますよね!?はい、これは実はコンストラクションの中の書き方です.コンストラクタについてもっと知りたいなら、調べられます.
javascript対象に向ける――constructor属性(構造関数属性)
中には詳しい説明があります.私達がカスタマイズしたサービスを作成した時、
app.co ntroller(「myCtrl」、「$scope」、「serviceName」、myCtrl」)呼び出しができます.実は、thisが指しているのですか?それとも直接呼び出しますか?
ご理解の不適切な点があれば、皆様のご指摘を歓迎します.ありがとうございます.