Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How to avoid calling this method twice?
Message
 
 
À
05/12/2014 11:51:27
Information générale
Forum:
Javascript
Catégorie:
Autre
Divers
Thread ID:
01611738
Message ID:
01611908
Vues:
27
Viv,

I can not make it to work - somehow if I try to define it this way (var service first and then implementation, then I get function getInvoices undefined).

Here is my current code:
(function () {
    'use strict';
    
    var app = angular.module('sysMgrApp');

    app.factory('invoicesService', ['$http', '$q', function($http, $q) {

        // Interface
        var service = {
            metaData: null,
            getMetaData: getMetaData,
            getInvoices: getInvoices,
            getAccountInvoices: getAccountInvoices,
            getInvoicesToBePaid: getInvoicesToBePaid,
            getInvoice: getInvoice,
            createInvoice: createInvoice,
            saveInvoice: saveInvoice,
            deleteInvoice: deleteInvoice,
            processPayments: processPayments
        }
        return service;

        var deferred = null;
        // Implementation
        var getMetaData = function () {
            
            if (deferred !== undefined) {
                return deferred.promise;
            }
            var deferred = $q.defer();

            if (service.metaData)
                deferred.resolve(service.metaData);
            else {

                $http.get('/api/invoices/metadata')
                    .success(function (data) {

                        service.metaData = data;
                        deferred.resolve(data);
                    })
                    .error(function (data, status, header, config) {

                        deferred.reject(status);
                    });
            }

            return deferred.promise;
        };

        var getInvoices = function (queryRequest) {
            var deferred = $q.defer();
            $http.get('/api/invoices', { params: queryRequest })
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(status);
                });
            return deferred.promise;
        };

        var getAccountInvoices = function (queryRequest) {
            var deferred = $q.defer();
            $http.get('/api/invoices/getAccountInvoices', { params: queryRequest })
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(status);
                });
            return deferred.promise;
        };

        var processPayments = function (transactionObject) {
            var deferred = $q.defer();
            $http.post('/api/invoices/processPayments', transactionObject)
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(status);
                });
            return deferred.promise;
        };

        var getAccountInvoices = function (queryRequest) {
            var deferred = $q.defer();
            $http.get('/api/invoices/getAccountInvoices', { params: queryRequest })
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(status);
                });
            return deferred.promise;
        };

        var getInvoicesToBePaid = function (queryRequest) {
            var deferred = $q.defer();
            $http.get('/api/invoices/getInvoicesToBePaid', { params: queryRequest })
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(status);
                });
            return deferred.promise;
        };

        var getInvoice = function (id) {
            var deferred = $q.defer();
            $http.get('/api/invoices/' + id)
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(status);
                });
            return deferred.promise;
        };

        var createInvoice = function (invoice) {
            var deferred = $q.defer();
            $http.post('/api/invoices', invoice)
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(status);
                });
            return deferred.promise;
        };

        var saveInvoice = function (invoice) {
            var deferred = $q.defer();
            $http.put('/api/invoices', invoice)
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(data, status);
                });
            return deferred.promise;
        };

        var deleteInvoice = function (invoiceNo) {
            var deferred = $q.defer();
            $http.delete('/api/invoices/' + invoiceNo)
                .success(function (data) {
                    deferred.resolve(data);
                })
                .error(function (data, status, header, config) {
                    deferred.reject(status);
                });
            return deferred.promise;
        };     
              
    }]);
})();
I can try moving functions declaration to the top of the code (as I've done yesterday to fix this problem) but I don't see why it has to be this way.

Do you see what is wrong here? Is it because we're on fairly old AngularJs version?
If it's not broken, fix it until it is.


My Blog
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform