1
我正在開發Ionic的應用程序,並且我是全新的角度js,cordova和離子。AngularJS/Ionic工廠返回不同的值
問題是,我正在嘗試創建一個服務,它向API請求響應。我使其在控制器完美地工作:
$scope.search = function(icao) {
console.log(icao);
$scope.forecastfuture = [];
$http.get("http://api.wunderground.com/............../UK/"+icao+".json")
.success(function(data, status, headers, config){
console.log(data);
console.log(typeof data);
for(i=0; i<36; i++){
var day = data.hourly_forecast[i].FCTTIME.pretty;
var maxtemp = data.hourly_forecast[i].temp.metric;
var mintemp = data.hourly_forecast[i].dewpoint.metric;
var feelslike = data.hourly_forecast[i].feelslike.metric;
var humidity = data.hourly_forecast[i].humidity;
var windspd = data.hourly_forecast[i].wspd.metric;
var winddir = data.hourly_forecast[i].wdir.dir;
var sky = data.hourly_forecast[i].condition;
var precip = data.hourly_forecast[i].qpf.metric;
var snow = data.hourly_forecast[i].snow.metric;
var icon = data.hourly_forecast[i].icon_url;
console.log(day);
console.log(maxtemp);
$scope.forecastfuture.push({
id: i,
day: day,
maxtemp: maxtemp,
mintemp: mintemp,
feelslike: feelslike,
humidity: humidity,
windspd: windspd,
winddir: winddir,
sky: sky,
precip: precip,
snow: snow,
icon: icon});
}
})
.error(function(data, status, headers, config){
console.log(data);
});
}
但現在我正在學習創建廠,因爲我需要這個使用不止一次,但在工廠的回報比在控制器不同你可以看到一個日誌的形象在這裏:
第一個是工廠返回 ,因爲您可以看到數據與第二部分不同,那就是直接在控制器中的響應,即http.get。
我的問題是,當我試圖從工廠讀取任何東西時,它總是拋出一個錯誤。在這裏,你必須爲工廠代碼:
var forec = ForecastService.getForecastResponse("UK", "London");
var day = forec.getDay(1);
謝謝你,我開始覺得我錯了一切!這工作:) – ZetaPR
小心,仍然...您使用'.success',雖然在你的例子中的作品,可能表明一些誤解。 '.success'與'.than'稍微有意義的方式不同 - 例如,'return wresp;'(在'.success'中)完全沒用,因爲這個返回沒有被任何東西捕獲。 –
謝謝!如果有人想知道如何閱讀下一個承諾中的承諾,可以在這裏閱讀:http://stackoverflow.com/a/16312760/1099945 – gyosifov