我正在使用相同的工廠方法進行兩次REST API調用以分隔URL。
這是我目前Angularjs代碼結構:
angular.module('evtApp', [])
.controller('EventAppController', ['$scope', '$q', 'restApi', function($scope, $q, restApi) {
// var ajaxCall_1 = restApi.fetchData(tweetUrl),
// ajaxCall_2 = restApi.fetchData(instaUrl);
$q.all([restApi.fetchData(tweetUrl), restApi.fetchData(instaUrl)]).then(function() {
// Save the the return data values to the respective scopes.
// $scope.tweetUrl = data;
// $scope.instaUrl = data;
});
}])
.factory('restApi', ['$q', '$http', function($q, $http) {
var q = $q.defer();
return {
fetchData: function(url) {
$http.jsonp(url).success(function(data) {
console.log(data);
q.resolve(data);
}).error(function(error) {
q.reject(error);
});
return q.promise;
}
};
}])
當我看網絡請求它表明,我已經取得了4次通話,而不是
樣的網絡調用的:
search?q=twitter,instagram,flicker&callback=angular.callbacks._3
search?q=quotes:yes&callback=angular.callbacks._0
search?q=twitter,instagram,flicker&callback=angular.callbacks._1
search?q=quotes:yes&callback=angular.callbacks._2
出了什麼問題?而且,如何獲取返回提要並將tweetURL調用保存到$ scope.tweetUrl,並將instaUrl調用保存到$ scope.instaUrl。 我知道jQuery $.when(func1, func2).done(function(func1data, func2data){});
我得到.done()中各個調用的值。我怎樣才能做到以上的代碼。
你可以包括你的.html呢?你可能有兩個EventAppController引用,每個都會創建一個$ scope。您可以通過將重複呼叫轉移到服務或工廠來避免重複呼叫。 – 2015-02-10 01:27:09
感謝布拉德,我沒有意識到這可能是問題所在,我確實有兩個同名的ng-controller。謝謝 :)。問題第二部分的任何內容。 – Vish 2015-02-10 01:30:45