我需要通過提供輸入日期來檢索服務中的輸出數據。數據在服務上執行,但我無法將輸出數據返回給控制器。我做了一個代碼的鏈接。鏈接是 Plaunker鏈接在Angular中返回服務控制器的數據
0
A
回答
3
您需要return
您$http.get
和內部.then
最終修改變量,說obj
。
像這樣:
return $http({
url: 'miqaat.json',
method: 'GET',
})
.then(function(response) {
var all_miqaats = response.data.response;
var obj = all_miqaats.find(function(v) {
return v.miqaat_date == dat
});
if (obj == undefined || obj == "") {
console.log("obj = ");
console.log(obj);
obj.isHoliday = "100";
// return obj;
} else {
obj.mq_title = obj.title;
obj.isHoliday = "101";
// return obj;
console.log("Data from Service");
console.log(obj);
}
return obj;
})
而且,因爲它返回的承諾,在控制器,你需要將其更改爲:
getMiqaat.findMiqaat($scope.date).then(function(res) {
$scope.miqaat = res;
});
無論你應該將你的.then
和catch
到controller
或不應該取決於你有多少代碼reuse
。所以,直到我知道細節之後纔會對此發表評論。
+0
感謝Tanmay ..這是我的工作.. –
+0
@ R.Sharma高興我可以幫忙! :) – tanmay
1
而不是從工廠捕捉承諾。從控制器捕捉它。只在工廠內返回http。
app.controller('myCtrl', function($scope, getMiqaat) {
$scope.date = "2017-04-11";
getMiqaat.findMiqaat($scope.date)
.then(function(response) {
var all_miqaats = response.data.response;
var obj = all_miqaats.find(function(v) {
return v.miqaat_date == $scope.date
});
if (obj == undefined || obj == "") {
console.log("obj = ");
console.log(obj);
obj.isHoliday = "100";
$scope.miqaat = obj;
} else {
obj.mq_title = obj.title;
obj.isHoliday = "101";
$scope.miqaat = obj;
console.log("Data from Service");
console.log(obj);
}
})
.catch(function(response) {
response.response = "Internal Server Error!";
});;
});
app.factory('getMiqaat', function($http) {
return {
findMiqaat: function(date) {
var dat = date;
console.log(dat);
return $http({
url: 'miqaat.json',
method: 'GET',
})
}
};
})
0
使用下面提及的代碼將正常工作。請確保按照您的json匹配鍵。
控制器代碼:
var app = angular.module("myApp", []);
app.controller('myCtrl', function($scope, getMiqaat){
$scope.date = "2017-04-11";
console.log("date ::"+$scope.date);
$scope.status;
$scope.miqaat;
getMiqaatData();
function getMiqaatData() {
getMiqaat.findMiqaat($scope.date)
.then(function (response) {
$scope.miqaat = response.data.response[0];
}, function (error) {
$scope.status = 'Unable to load data: ' + error.message;
});
}
});
app.service('getMiqaat', function($http){
this.findMiqaat = function(date){
var dat = date;
console.log(dat);
return $http({
url: 'miqaat.json',
method: 'GET',
});
}
})
Json :
{
"status":true,
"message":"List of the miqaats",
"response":[
{"miqaat_date":"2017-04-11",
"mq_title":" New Year",
"isHoliday" :"101"
},
{"miqaat_date":"2017-04-09",
"mq_title":"Some Fest",
"isHoliday" :"101"
}
]
}
相關問題
- 1. Angular - 簡單的自定義服務不會返回數據回控制器
- 2. Force AngularJS服務在加載控制器之前返回數據
- 3. 服務返回undefined控制器
- 4. AngularJS:從服務返回數據到控制器
- 5. 應將哪些數據從服務返回給控制器?
- 6. 將數據從服務返回給控制器
- 7. AngularJS工廠服務不返回動態數據控制器
- 8. 角度服務中的回調 - 如何將數據返回給控制器
- 9. 驗證控制器中的返回值而不是在服務
- 10. 返回的服務值始終在控制器中未定義?
- 11. 在Angular控制器中解析數據
- 12. 如何使用malhar-angular-dashboard中的數據服務返回widgetDefinitions?
- 13. jabber服務器返回的數據
- 14. Angular $ http服務/控制器到JSONP
- 15. Angular JS,工廠返回數據,但在控制器中它不見了
- 16. 服務器控制服務器控制
- 17. Angular JS延遲控制器和指令初始化,直到數據從服務器返回
- 18. Angular Js服務返回函數/對象?
- 19. 在標記中使用函數返回的服務器控件
- 20. 限制在服務器端返回的行數(強制限制)
- 21. Extjs 4如何將xml數據從服務器返回給extjs控制器?
- 22. CodeIgniter從控制器返回數據
- 23. WebApi控制器返回空數據
- 24. Angularjs控制器返回數據undefined
- 25. 控制器不返回數據到ajax
- 26. 在服務中返回大量數據
- 27. 無法在我的控制器中使用Angular加載服務
- 28. objective-c:從服務器返回數據
- 29. 從MVC控制器返回數據返回相同的視圖
- 30. Angular Dart將來自路由服務的數據傳遞到控制器中
https://plnkr.co/edit/4Uho7njMAXryTDOfwcLP?p=preview –
着增加與問題 –