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);
            }
        )
    }

});