這是調用服務以獲取酒店的 Angular js 控制器 vm.getTopHotels = function(){ var hotelsLimit = 10; var top_hotels = dataService.getHotels() .then(function(hotels){ console.log('adf'); sortHotels = commonMethods.sortHotels(hotels.data.data,'Rating','SORT_DESC'); hotelDetailsCheck = checkDetailsIfExists(sortHotels); //Get only top 10 hotels for home page top_hotels = hotelDetailsCheck.slice(0,10); vm.topHotels = top_hotels; }, function(data){ console.log('Failed to get Hotels'); }); }; vm.getTopHotels();** 這里是調用 Http get 請求以獲取數據的 dataService,但在控制器中,它給了我未定義的結果,所以 datsService 返回方法有問題,因為我認為它沒有返回 **(function(){ angular .module('app') .factory('dataService',DataFactory); DataFactory.$inject = ['$http','$q'] function DataFactory($http,$q){ var service = { hotels:[], getHotels:getHotels, saveHotels:saveHotels }; return service; function saveHotels(){ var def = $q.defer(); $http.get('/hotels/saveHotelsData') .then(function successCallback(data){ def.resolve(data); },function errorCallback(data){ def.reject('Something went down :('); }); return def.promise; } function getHotels(){ // var def = $q.defer(); return $http.get('/hotels/getHotelsData') .then(function successCallback(data){ service.hotels = data; }); } }})();
1 回答

大話西游666
TA貢獻1817條經驗 獲得超14個贊
// ...
.then(function(data) {
console.log('adf');
sortHotels = commonMethods.sortHotels(hotels.data.data,'Rating','SORT_DESC');
是什么hotels?它沒有在任何地方聲明。如果hotels應該是來自 API 的響應,那么應該這樣聲明:
.then(function(hotels) {
console.log('adf');
sortHotels = commonMethods.sortHotels(hotels.data.data,'Rating','SORT_DESC');
更新:您getHotels通過沒有返回語句的函數傳遞結果,因此將解析為未定義。應該
function getHotels(){
return $http.get('/hotels/getHotelsData')
.then(function successCallback(data) {
service.hotels = data;
return data;
});
}
- 1 回答
- 0 關注
- 175 瀏覽
添加回答
舉報
0/150
提交
取消