AngularJS utiliser une fonction dans un contrôleur de données de retour d'un service pour être utilisé en ng-repeat

Je suis en train d'utiliser une fonction dans un contrôleur de données de retour de sorte que je peux ré-utiliser la fonction dans l'application pour appeler les données ainsi que de l'actualiser de temps en temps.

Mon code semble correct, mais dans la pratique, les plantages du navigateur sur chaque charge.

Je suis en mesure de l'obtenir pour fonctionner en utilisant un E directive, puis de placer l'élément dans l'partielle, mais qui n'est pas accomplir ce dont j'ai besoin.

En fin de compte, je voudrais faire quelque chose comme ceci:

<div ng-repeat="user in getListUsers()">{{ user.somedata }}</div>

J'ai essayé diverses choses à faire fonctionner dans les tests, y compris en mettant l' $http dans le contrôleur, tous avec les mêmes résultats.

Si je assigner une variable dans la méthode de contrôleur au lieu de renvoyer les données, qui fonctionne, mais alors j'aurais besoin d'appeler la méthode dans le contrôleur, et je n'en veux pas à exécuter par défaut. Juste à la recherche de faire l'appel dans les modèles en cas de besoin.

Toute aide pour comprendre pourquoi cela ne fonctionne pas. Merci.

Voici ce que j'ai qui ne fonctionne pas...

elite.controller('UserController', function($scope, User){

    $scope.getListUsers = function(){
        User.listUsers().then(function(response){
            return response.users;
        });
    }

});

elite.factory('User', function($http){
   var User = {
      getUser: function(id){
          return $http.get('/user/' + id + '/settings').then(function(response){
              return response.data; 
          });
      },
      listUsers: function(){
        return $http.get('/user/').then(function(response){
          return response.data;
        });
      }
   }
   return User;
});

Edit:

À l'aide de certaines des idées ci-dessous, je suis en mesure d'obtenir les fonctionnalités que je voulais, juste d'une manière différente. Fondamentalement, je veux que les données à charger à la demande, plutôt qu'à l'avant, que je suis en train de regrouper tous les Utilisateur de la logique dans ce contrôleur, et je ne veux pas la totalité des données de charge pour chaque utilisateur. Je suis à l'aide de $rootScope temporairement jusqu'à ce que je figure sur certains de portée les problèmes de succession, comme l'utilisation de $champ d'application.les utilisateurs se termine avec une valeur null dans le modèle. Je peux voir l'appel AJAX de revenir, mais vous ne savez pas où il va, mais c'est une autre question.

elite.controller('UserController', function($scope, $rootScope, User){

    $scope.getListUsers = function(){

        User.listUsers().then(function(response){
            $rootScope.users = response.users;
        });
    };

});

Et dans un élément nav j'ai ceci:

<div ng-controller="UserController">
<a ng-href="/#user/list" ng-click="getListUsers()">user list</a>
</div>
Découvrez stackoverflow.com/questions/12336897/...
J'ai vu que plus tôt, mais le problème se produit même si je n'utilise pas de ng-repeat. Par exemple, si je place la fonction entre parenthèses, comme {{ getListUsers() }} , le navigateur se bloque toujours au lieu de montrer l'objet.

OriginalL'auteur Jazzy | 2014-01-06