angularJS: I need to make an $http request and resolve it in the same function -
in app.js, resolve ui-router thusly:
.state('edit', { url: '/edit/:id', templateurl: '/ang/views/edit/editapp.html', resolve: { loan: function ($q, $stateparams, loans) { var p = $q.defer(); loans.getloan($stateparams.id) .then(function (res) { p.resolve(res); }); homecoming p.promise; } }, controller: 'editappcontroller' }) i have loans mill promise resolved , in editappcontroller, send object mill farther processing using
$scope.loan = loans.makeloan(loan.data.data); here pertinent part of loans factory:
.factory('loans', function($http){ homecoming { getloan: function(id){ homecoming $http.get('/api/loans/' + id); }, makeloan: function(o){ o.jwg = 'this added in create loan'; homecoming o; }; in makeloan() method, did prove me work. need create $http phone call api additional info , need resolve phone call within same method (makeloan()) can add together calculations object within function before giving controller view.
can explain me how can this?
if need create 2 calls api , want retrieve promise of lastly call, can chain promises. homecoming lastly promise:
makeloan: function(){ homecoming $http.get('/api/loans/whatever').then(function(data){ homecoming $http.get('/api/loans/whatever2/'+data.id); }); } also, if may: doing here:
.state('edit', { url: '/edit/:id', templateurl: '/ang/views/edit/editapp.html', resolve: { loan: function ($q, $stateparams, loans) { var p = $q.defer(); loans.getloan($stateparams.id) .then(function (res) {a p.resolve(res); }); homecoming p.promise; } }, controller: 'editappcontroller' }) it's anti-pattern known deferred anti-paattern, improve way be:
.state('edit', { url: '/edit/:id', templateurl: '/ang/views/edit/editapp.html', resolve: { loan: function ($stateparams, loans) { homecoming loans.getloan($stateparams.id); } }, controller: 'editappcontroller' }) angularjs
No comments:
Post a Comment