私はいくつかの指令を持っています。これらの指令は、同じデータモデルをそのビューに表示します。データはajax呼び出しの後に生成されます。現在、私はajax呼び出しをサービスに入れています。そして、ajax呼び出しが返されると、サービスの変数が更新されます。このような何か:これはAjaxのリターン(私はので、サービスの属性として返されたデータを置く意味に基づいてビューを更新するための良い方法があればサービスからの価値観と角度の変化を検出するメカニズム
//service
serviceModule.service("myService",function(){
this.data = [];
this.ajaxCall = function(){
...
//in ajax success call back
this.data = response.data;
};
});
//directive A
moduleA.directive("directiveA",function(myService){
return{
templateUrl:'someUrl.html'
link: function(scope){
scope.data = myService.data;
}
}
})
// someUrl.html
<div ng-repeat="line in data">
{{line.abc}}
</div>
私の最初の質問は、私はわからないということですデザインの観点からは、いくつかの属性ではなく、どこかに割り当てられる返された値です...)
サービス属性の変更を自動的に検出するいくつかの方法を試しました。
1)私の元のアプローチ(上記の擬似のような)はうまくいかず、私はなぜだろうか。私は "scope.data = myService.data "、myService.dataおよびscope.dataは実際には同じメモリアドレスを指し、そのメモリアドレスの内容が変更されると、" scope.data "も変更され、ディレクティブによって検出されるはずです。誰かがメモリの観点から私にメカニズムを紹介できるのであれば、非常に役に立ちます。その後、私はディレクティブを少し変え AngularJS : How to watch service variables? :
//directive A
moduleA.directive("directiveA",function(myService){
return{
templateUrl:'someUrl.html'
link: function(scope){
scope.service = myService;
}
}
})
とhtmlで、私はちょうどservice.dataを使用する代わりに
2)次に私はいくつかのGoogle検索を行なったし、この便利なポストを見つけましたデータ。 。それは私が$ rootScopeを追加するまで動作しません$(適用)サービスで:
serviceModule.service("myService",function(){
this.data = [];
this.ajaxCall = function(){
//in ajax success call back
this.data = response.data;
**$rootScope.$apply();**
};
});
だから、誰もが$時計が角にのために働く、この$適用方法を説明してもらえますか?
ありがとうございます!
役立ちますhttp://webiks.com/communication-in-an-angular-app-two-approaches/
希望:ここでは2つの方法を示して別のポストです。幸いなことに、この情報には、[このサイトポイントの投稿](http://www.sitepoint.com/understanding-angulars-apply-digest/)など、多くの情報があります。 – Lex