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.
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
Post a Comment