我有JSON API,它有9个产品,我如何编写服务来获得基于productID的单个产品(JSON每个产品都有PRODUCTID)。这是我的JSON LINK https://api.myjson.com/bins/5a403我知道如何使用routeparams获取特定的ID我所需要的只是重写服务以获得单个产品
var app=angular.module('myApp');
app.service('productservice', function($http){
this.productlists=function(index)
{
return $http.get("https://api.myjson.com/bins/5a403")
.success(function(data) {
return data;
})
.error(function(data) {
return data;
});
};
});
答案 0 :(得分:0)
您可以从promise
返回service
。
var app=angular.module('myApp');
app.service('productservice', function($http){
this.productlists=function(productId) {
var _promise = $http.get("https://api.myjson.com/bins/5a403")
.then(function(response){
// assign the product by filtering based on productId
var requiredObj = response.filter(function(product){
if(product.productId == productId){
return product;
}
});
return requiredObj;
});
return _promise;
};
});
在您的controller
中,您可以获得UIstateparams
,从中可以提取id
=>把它传递给你的服务。
$scope.yourMethod = function(id){
productservice.productlists(id).then(function(data){
$scope.yourModel = data;
});
}
我认为应该这样做。
答案 1 :(得分:0)
var app=angular.module('myApp');
app.service('productservice', function($http){
this.productlists=function(index)
{
return $http.get("https://api.myjson.com/bins/5a403")
.success(function(data) {
// lets assume productId=1;
data=data.filter(function(item){
if(item.productId==productId){
return item;
}
})
return data;
})
.error(function(data) {
return data;
});
};
});
注意:您可以返回承诺(已在其他答案中显示)并在控制器中的数据对象上使用 .filter 。< / p>