私はサービスメソッドを呼び出すコントローラを持っています。そのサービスメソッドの内部にAJAX呼び出しがあります。 AJAX呼び出しの成功では、AJAX応答の結果に応じて再帰的なAJAX呼び出しを持つ別のサービスメソッドを呼び出しています。私が望むのは、私のコントローラで、再帰的なAJAX呼び出しの最終結果を取得することです。私はちょうどから元のAJAX呼び出しからdata
を受け、私のコントローラでは現時点ではAJAXの成功の中で再帰的なAJAXからの約束
app.service('myService', function() {
var self = this;
//This one is recursive
self.lookupUUID = function(lookupData){
$.get('/another/url/here', function (data){
if(!data[1]){
self.lookupUUID(data);
} else {
return data;
}
}, 'json'
)
}
self.lookup = function(){
$.get('/some/url/here', function (data){
if(!data[1]){
return self.lookupUUID(data);
} else {
return data;
}
}, 'json'
);
}
});
:
app.controller('myController', function($scope, myService) {
$scope.getResults = function(){
myService.lookup().then(function(data){
console.log(data); //This returns just the 'lookup' data, but I want the final AJAX results of the recursive 'lookupUUID' service method here
});
}
$scope.getResults();
});
はサービス:
コントローラ(BOTTOMで更新コードを参照してください)サービスのlookup
メソッド。
更新されたコード:
コントローラー:
app.controller('myController', function($scope, myService) {
$scope.getResults = function(){
myService.lookup().then(function(data){
console.log(data);
});
}
$scope.getResults();
});
サービス:残念ながら
app.service('myService', function($http) {
var self = this;
//This one is recursive
self.lookupUUID = function(lookupData){
return (
$http.get('/another/url/here', function (data){
if(!data[1]){
return self.lookupUUID(data);
} else {
return data;
}
}, 'json'
) //end of GET
); //end of return
} //end of self.lookupUUID
self.lookup = function(){
return (
$http.get('/some/url/here', function (data){
if(!data[1]){
return self.lookupUUID(data);
} else {
return data;
}
}, 'json'
) //end of GET
); //end of return
} //end of self.lookup
});
これは、再帰メソッドlookupUUID
の最終結果を返しません。最初のAJAX lookup
メソッドからコントローラにデータを戻します。これは、$ qをサービス使用して行われ
あなただけの 'self.lookupUUID(データ)への再帰呼び出しの前に' return'を追加しようとしていますか; '? –
この呼び出す 'self.lookupUUID' –
私は実際にコンソールエラーを取得しています:" TypeError:プロパティを読み取ることができません '未定義 "。私のコントローラの '.then'行に。 – tnschmidt