サービスを使用してコントローラのデータを更新できません。私は私のサービスでhttp.getを行い、データに対して何らかの処理を行い、そしてコントローラの$スコープを更新したいと思います。 私は以下のような角度サービスを持っています。私がフォーラムで読んだ回答から、自分のデータがビューで更新されるはずです。しかし、それは起こっていない。
app.service('myService', function($http, $rootScope) {
this.selected = {
item: ''
}
this.getData = function(key){
return $http.get('/myapp/stocklist/'+key);
}
this.gs = [];
this.sr = [];
this.siri=[];
var vm=this;
this.cleanData = function(response){
for(var i=0; i<response.data.length; i++) {
vm.gs.push(response.data[i].name);
vm.sr.push(response.data[i].high);
}
vm.siri.push(vm.sr);
}
});
ここにコントローラがあります。 gsおよびsr変数は空白です。私が読んだことから、私はこのために時計を使用する必要はありません。下のコードはうまくいくはずです(私は時計の使い方についてはあまりよく分かりません)。これが時計で動作する場合は、どうすればいいか教えてください。
app.controller('graph', ['$scope', '$http', 'myService', function($scope,$http, myService) {
$scope.mySelected = myService.selected;
console.log($scope.mySelected);
myService.getData($scope.mySelected).then(function(response){
myService.cleanData(response);
$scope.sr=myService.siri;
$scope.gs=myService.gs;
console.log(myService.sr);
});
}]);
私は新しい角度になっていて、誤った方法でコードを構成している可能性があります。私はデザインの提案にも感謝します。
$ http.getに正しい方法でサービスを使用しているのかどうか疑問に思っています。私はフォーラムの早い段階で質問をしていましたが、これが私が返事として得たものです。これは、サービス関数から返されたデータを使用し、コントローラ自体でデータ処理を行うときに機能します。 助けてもらえますか?
この質問を確認してくださいhttp://stackoverflow.com/questions/36663503/invoke-one-controller-from-another/36663536?noredirect=1#comment60919252_36663536 – user3045179
コンソール.log(response) 'あなたの' myService.cleanData(response) 'の直前にオブジェクトに何かがありますか?もしそうなら、あなたの 'myService'' this.cleanData'メソッドの中の最初の行として' console.log(response) 'をどうでしょうか?オブジェクトにはまだものがあります。 – Lex
@ sachinは動作していません。それは私のために働いているhttp://plnkr.co/edit/TRpa9540r8TPcMJeYhwY?p=previewをチェックしてください。 – sreeramu