2013-03-05 1 views
1

Est-ce une bonne pratique? Est-ce une bonne approche?Classe Angularjs avec propriétés et méthodes dans le modèle

function UsersCtrl ($scope, $window, $http) { 

    $scope.Users = { 

     data : [], 

     load : function() { 
      $http.get('users/').success(function (data) { 
       $scope.Users.data = data; 
      }); 
     }, 

     emailUser : function (user) {   
      // send email (just an example) 
     } 

    }; 
} 

Un HTML:

<li ng-repeat="user in Users.data"> 
</li> 

<a href="#" ng-click="Users.load()"> 
    Load 
</a> 

<a href="#" ng-click="Users.emailUser(user)"> 
    Email 
</a> 

Je suis inquiet au sujet de la performance!

J'ai cherché sur le web et je n'ai vu aucun code comme ça. La plupart d'entre eux séparent les méthodes et les propriétés dans un modèle $ scope spécifique.

Merci d'avance!

Répondre

0

Ce code particulier n'affectera pas les performances, mais il affectera la testabilité et la lisibilité de l'application. De plus, ceci est en confrontation avec le principe de séparation des préoccupations et le modèle MVC standard.

Votre objet Utilisateurs doit être défini dans une fabrique de services et injecté là où vous le souhaitez.

Si vous le laissez défini à l'intérieur de votre contrôleur, vous devrez le redéfinir si vous avez besoin du même objet Utilisateurs dans un autre contrôleur. Cela dit, il n'est pas surprenant que vous n'ayez vu aucun code comme celui-ci.

+0

Merci Stewie pour la réponse. Avez-vous un exemple d'utilisation de l'usine dans ce scénario? Toutes les propriétés et méthodes doivent être dans le service et je dois le dupliquer dans le contrôleur pour y avoir accès? Comment interagir avec la manipulation du DOM avec les méthodes de services? Merci encore – user2135628

+0

Voici un [ressource exemple plunker] (http://plnkr.co/edit/UkFguJk3i9vgH45TtfYe) pour vous aider à démarrer. – Stewie

Questions connexes