javascript - Angularjs use factory value inside one more factory -


hi developing web application in angularjs. have 1 java script file 2 factories makes http calls web api. want use 1 factory value output inside factory. below first factory

myapp.factory('sadadpaymentapi', ['$http', '$cookiestore', 'cfg', 'scrollfunction', 'leaselisting','$q', function ($http, $cookiestore, cfg, scrollfunction, leaselisting,$q) {     var sadadpaymentapiobject = {};     var baseurl = cfg.baseurl;     var loginid = $cookiestore.get("loginid");     var cookiepreferredlanguage = $cookiestore.get('preferredlanguage');     var urlapi = baseurl + "api/servicerequest/createrssedad/";     sadadpaymentapiobject.callsadad = function (paymenttype) {         var request = {             url: urlapi,             method: 'post',             data: {                 sractivityid: loginid,                 paymenttype: paymenttype,                 paymentamount: "100" //need value factory             },             headers: scrollfunction.getheaders()         };         return $http(request);     }     return sadadpaymentapiobject; }]);  

below factory can value paymentamount parameter in above factory.

myapp.factory('leaselisting', ['$http', '$cookiestore', 'cfg', 'scrollfunction','$q', function ($http, $cookiestore, cfg, scrollfunction,$q) {     var leaselistingobject = {};     var baseurl = cfg.baseurl;     var loginid = $cookiestore.get("loginid");     var cookiepreferredlanguage = $cookiestore.get('preferredlanguage');     leaselistingobject.getvalue = function () {         var requestobj = {                                 url: baseurl + "api/servicerequest/getrolspsrleaselist/",                                 method:'post',                                 data: {                                     loginid: loginid,                                     accountnumber: $cookiestore.get("accountnumber")                                 },                                 headers: scrollfunction.getheaders()                     };         return $http(requestobj).then(function (response) {             return response.data;         });     }     return leaselistingobject; }]); 

when inject paymentamount: leaselisting.getvalue() , if try display in console value injected console.log(leaselisting.getvalue()); promise {$$state etc. have attached screen shot. need above figure variable accountnumber. nesting factory

i trying in first api, paymentamount: "100" instead of hard coding want other factory. may know how this? appreciated. thank you.

leaselisting factory has method getvalue call asyc call , resolves it.

so can write:

// ... var request = {         url: urlapi,         method: 'post',         data: {             sractivityid: loginid,             paymenttype: paymenttype,             paymentamount: leaselisting.getvalue();         },  // ... 

this demo in fiddle simulates case. since second async call based on 1st one, use promise chain. in case simulate async call $timeout returns part of address (in case paymentamount), resolve promise , call other promise $http

app.controller('fesscntrl', function ($scope, sadadpaymentapi) {      $scope.alertswap = function () {                    $scope.data = sadadpaymentapi.getdata();         };  });  app.$inject = ['$scope', 'leaselisting'];  app.factory('leaselisting', ['$timeout','$q',  function($timeout, $q) {             var leaselistingobject = {             getvalue: function () {                              var deferred = $q.defer();                               $timeout(function(){                                   return {address: 'singapore, sg, singapore, 153 bukit batok street 1'};                }, 3000).then(function(val){                deferred.resolve(val);                 });                               return deferred.promise;             }         };                return leaselistingobject; }]);   app.factory('sadadpaymentapi', ['$http','$q','leaselisting', function($http, $q,leaselisting) {           var leaselistingobject = {             getdata: function () {                     var url = 'http://maps.googleapis.com/maps/api/geocode/json?address=';                   return leaselisting.getvalue().then(function(result){                  url = url + result.address + '&sensor=true';                   return $http({method: 'get', url: url})                 }).then(function (response) {                    return response.data;                  });             }         };                return leaselistingobject; }]); 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -