1
必要なデータを取得するためにページが読み込まれたときに3回API呼び出しを行います。 私のアプリケーションはAngularJS#1.5.8です。私は別々のサービスでデータを持ち出すことができますが、何らかの理由で、コントローラで最初のAPI呼び出しのデータが3回すべて返されます。 3つのAPI呼び出しの間に依存関係はありません。ここで AngularJS Promise Chainingで同じデータが返されます
はここ// app.module.js
(function() {
angular
.module('SomeAppName', [])
.controller('DDCtrl', DDCtrl);
DDCtrl.$inject = ['$scope', 'ApiService']
function DDCtrl($scope, ApiService) {
var vm = this;
vm.qddData = [];
vm.rddData = [];
vm.sddData = [];
activate();
function activate() {
ApiService.getNumberData('api/get.first.data.php')
.then(function (firstdata) {
console.log(firstdata);
vm.qddData = firstdata;
return ApiService.getNumberData('api/get.second.data.php');
})
.then(function (seconddata) {
console.log(seconddata); // logs firstdata instead of seconddata
vm.rddData = seconddata;
return ApiService.getNumberData('api/get.third.data.php');
})
.then(function (thirddata) {
console.log(thirddata); // logs firstdata instead of thirddata
vm.sddData = thirddata;
})
.catch(function (err) {
console.log(err.data);
});
}
}
})();
が正しくない
// app.service.js
(function() {
angular
.module('SomeAppName')
.factory('ApiService', ApiService);
ApiService.$inject = ['$http', '$q'];
function ApiService($http, $q) {
var deferred = $q.defer();
return {
getNumberData: getNumberData
};
function getNumberData(dictUrl) {
return $http.get(apiUrl)
.then(getRequestComplete)
.catch(getRequestFailed);
}
function getRequestComplete(response) {
console.log(response.data); // here the data is logged correctly
deferred.resolve(response.data);
return deferred.promise;
}
function getRequestFailed(error) {
deferred.reject(error);
return deferred.promise;
}
}
})();
ああ、私はカスタム約束を作成するために、右のだろう通常の機能を実行する(ない$ HTTP)された場合、私は今... @Pankaj ところでそれを参照してください? – overlord
@overlordお手伝いをしてうれしいことありがとうございます;) –