【发布时间】:2015-10-18 00:18:06
【问题描述】:
我的后端已链接到该服务。当我在控制器上调用我的函数时,它会在服务中执行该函数,并且控制台会记录数据。从服务到控制器的数据是通过一个承诺传递的。我得到了适当的数据。但是,要在我的范围内绑定数据,我需要控制器上的数据。当我控制台记录数据时,我得到未定义的控制台日志。我不确定我做错了什么。
控制器
"use strict";
app.controller("weatherCtrl", function($scope, weatherService) { //START APP
// ***********************************************
// *************** GET LATEST DATA ***************
// ***********************************************
$scope.getTodaysWeather = function() { //OPEN FUNCTION
weatherService.getWeatherData().then(function(data) {
console.log("Weather Control", data);
// $scope.todaysWeather = data;
});
}; //CLOSE FUNCTION
$scope.getTodaysWeather(); //INVOKE THE FUNCTION
}); //CLOSE APP
服务
"use strict";
app.service("weatherService", function($http, $q) { //START APP
// ***********************************************
// *************** GET LATEST DATA ***************
// ***********************************************
this.getWeatherData = function() { //OPEN FUNCTION
var defer = $q.defer(); //promise
$http.get("/app/weather/weatherData")
.success(function(response) { //callback for resolve
console.log("Main Service Data", response);
var weatherDataObj = response.report;
var weatherDataArray = [];
for (var key in weatherDataObj) {
weatherDataArray.push({
max_temp: weatherDataObj.max_temp,
min_temp: weatherDataObj.min_temp
});
}
console.log("weatherDataArray from Service", weatherDataArray);
defer.resolve(); //successful promise
})
.error(function(err) {
defer.reject(err);
});
return defer.promise; //return promise "q"
}; //CLOSE FUNCTION
}); //CLOSE APP
【问题讨论】:
标签: javascript angularjs model-view-controller angularjs-scope