varUsermodule = Angular.module ("Usermodule", []);//User Delivery address serviceUsermodule.factory ("UserAddress",function($http, $rootScope) {varAddressList =undefined; return{getaddresslist:function () { if(!AddressList) {$http. Post ("/api/addresscontroller/datagridaddress", {user_id: $rootScope. user.id}). Success (function(data) {if(data.success) {AddressList=data.obj.rows; } }) } returnAddressList; }}) Usermodule.controller (' Addresslistctrl ',function($scope, $http, useraddress) {$scope. AddressList=useraddress.getaddresslist ();});
There is a problem with the above code, $http. Post is executed asynchronously, return addresslist; addresslist = data.obj.rows; $scope is executed before. AddressList to get is undefined;
Correct code:
Usermodule.factory ("UserAddress",function($http, $rootScope) {varAddressList =undefined; return{getaddresslist:function(callback) {if(!AddressList) {$http. Post ("/api/addresscontroller/datagridaddress", {user_id: $rootScope. user.id}). Success (function(data) {if(data.success) {AddressList=data.obj.rows; Callback (AddressList); } }) } Else{callback (AddressList); }}}) Usermodule.controller (' Addresslistctrl ',function($scope, $http, useraddress) {useraddress.getaddresslist (function(data) {$scope. AddressList=data; })});
Ajax return value to upper function