AngularJS 简单的服务
AngularJS simple Service
我正在开发一项 AngularJS 服务。第一个是从 API:
获取产品信息
getProductInfo: function(ean) {
var deferred = $q.defer();
api.get('products/' + ean, {})
.then(function(data) {
service.currentProduct = data;
deferred.resolve(data);
}, function() {
delete service.currentProduct;
deferred.reject('Invalid EAN: ' + ean);
});
return deferred.promise;
},
第二次我想从产品信息中获取 EAN 并将其用作要放置在外部图像中的变量 link:
getProductImg: function() {
var ean = ???
var url = "http://externalurl" + ean + "_01c";
return(url);
},
理想情况下,我想将这些结合起来,以便外部图像成为 getProductInfo 的一部分,这可能吗?
谢谢,
莎娜
您可以这样修改您的服务:
angular.module('core.products').service('Products', function($http, $q){
this.getInfo = function(ean){
var defferred = $q.defer();
$http.get('products/' + ean, {}).then(
// success
function(data) {
var product = data;
product.img = "http://externalurl" + ean + "_01c";
deferred.resolve(product);
},
// error
function() {
deferred.reject('Invalid EAN: ' + ean);
}
);
return deferred.promise;
}
})
并在控制器中使用该服务:
angular.module('core.products').controller('ProductsController', function($scope, Products){
$scope.getInfo = function(ean){
Products.getInfo(ean).then(
function(product){
$scope.product = product;
},
function(error){
alert(error);
}
)
}
});
我正在开发一项 AngularJS 服务。第一个是从 API:
获取产品信息getProductInfo: function(ean) {
var deferred = $q.defer();
api.get('products/' + ean, {})
.then(function(data) {
service.currentProduct = data;
deferred.resolve(data);
}, function() {
delete service.currentProduct;
deferred.reject('Invalid EAN: ' + ean);
});
return deferred.promise;
},
第二次我想从产品信息中获取 EAN 并将其用作要放置在外部图像中的变量 link:
getProductImg: function() {
var ean = ???
var url = "http://externalurl" + ean + "_01c";
return(url);
},
理想情况下,我想将这些结合起来,以便外部图像成为 getProductInfo 的一部分,这可能吗?
谢谢, 莎娜
您可以这样修改您的服务:
angular.module('core.products').service('Products', function($http, $q){
this.getInfo = function(ean){
var defferred = $q.defer();
$http.get('products/' + ean, {}).then(
// success
function(data) {
var product = data;
product.img = "http://externalurl" + ean + "_01c";
deferred.resolve(product);
},
// error
function() {
deferred.reject('Invalid EAN: ' + ean);
}
);
return deferred.promise;
}
})
并在控制器中使用该服务:
angular.module('core.products').controller('ProductsController', function($scope, Products){
$scope.getInfo = function(ean){
Products.getInfo(ean).then(
function(product){
$scope.product = product;
},
function(error){
alert(error);
}
)
}
});