2016-08-03 61 views
3

我在我的角度應用程序中有兩個工廠。從另一家工廠的工廠更新數據

app.factory('FavoritesArtists',['$http', '$q', 'UserService', function($http, $q, UserService){ 
    var deferred = $q.defer(); 
    var userId = UserService.getUser().userID; 

    $http.get('http://myurl.com/something/'+userId) 
    .success(function(data) { 
     deferred.resolve(data); 
    }) 
    .error(function(err) { 
     deferred.reject(err); 
    }); 

    return deferred.promise; 
}]); 

,我有一個值,我從另一家工廠獲得:

var userId = UserService.getUser().userID; 

但我不更新時UserService.getUser()被改變,以$表視圖的變化,但我不知道它在工廠內如何工作。

歡迎任何幫助,謝謝你們!

回答

0

更好的設計模式將是

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

    var getUser = function() { 
     return http.get("url_to_get_user"); 
    }; 

    return { 
     getUser: getUser 
    }; 

}]); 

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

    var getFavoriteArtists = function() { 

     UserService.getUser().then(function(response) { 

      var userId = response.data.userID; 
      return $http.get('http://myurl.com/something/' + userId); 

     }, function() { 

      //passing a promise for error too 
      return $q.reject("Error fetching user"); 

     }); 
    }; 

    return { 
     getFavoriteArtists: getFavoriteArtists 
    }; 

}]); 

現在叫它控制器一樣,

ArtistService.getFavoriteArtists().then(function(response) { 

    //do something with response.data 

}, function(response) { 

    //log error and alert the end user 

}); 
+0

感謝您的答覆,不幸的是它沒有工作.. –

+0

哪裏是錯誤? – naveen

+0

UserService.getUser(...)。然後不是一個函數 在service.js –

1

有人嗎?

app.factory('FavoritesArtists',['$http', '$q', 'UserService', function($http, $q, UserService){ 
    var deferred = $q.defer(); 

    $http.get('https://homechefhome.fr/rise/favorites-artists.php?user_id='+userId) 
    .success(function(data) { 
     deferred.resolve(data); 
     }) 
     .error(function(err) { 
      deferred.reject(err); 
     }); 

    return deferred.promise; 
}]); 

我只是需要讓用戶id變量動態..