2014-11-18 4 views
5

Ich bin von asp.net mvc Hintergrund und habe kürzlich mit Angularjs begonnen. Ich habe eine einfache Entität mit dem Namen Account, die durch RESTful asp.net Web API ausgesetzt ist. Ich erstelle jetzt seine Kundenseite mit Angular. Auf der Client-Seite habe ich Ansichten wie Erstellen, Bearbeiten, Liste und Details.Sollte es in Angularjs einen Controller pro Ansicht geben?

Sollte ich für jede Ansicht einen Controller erstellen oder sollte es nur einen Controller namens 'accountsController' für alle CRUD-Operationen geben? Was ist die Standardpraxis in diesem Szenario?

Antwort

3

teilen Sie nicht auf Controller in Bezug auf "Operationen" wie CRUD, in diesem Fall yu "reden mit einem erholsamen API", da erholsame Dienste verwendet die HTTP-Verben CRUD-Operationen auf der Karte, wie:

PUT, POST -> Create 
GET  -> Read 
POST  -> Update 
DELETE -> Delete 

eine gute Praxis ist kantig Dienstleistungen zu schaffen und eine $ Ressource für die spätere Verwendung, Karte der $ Ressource Ihrer CRUD Endpunkte wie folgt zurück:

angular.module('app').factory('Users', ['$resource', 
    function($resource) { 
     return $resource('users', {}, { 
      update: { 
       method: 'PUT' 
      }, 
      deleteMember: { 
       method: 'DELETE', 
       url:'team/member/:userId/:teamId' 
      }, 
      addMember: { 
       method: 'POST', 
       url:'team/member' 
      }, 
      addTeam: { 
       method: 'POST', 
       url:'team' 
      }, 
      deleteTeam: { 
       method: 'DELETE', 
       url: 'team/:teamId' 
      }, 
      getTeam: { 
       method: 'GET', 
       url: 'team/:teamId' 
      }, 
      teams: { 
       method: 'GET', 
       url: 'team/list/:orgId' 
      } 

     }); 
    } 
]); 

können Sie re Verwenden Sie diesen Service und injizieren Sie ihn in einen anderen Service oder Controller, je schlanker Ihre Controller, desto besser.

in dem Fall, dass Sie die Benutzeroberfläche ändern möchten, da angular ist deklarativ und nicht imperativ wird nicht empfohlen, die dom von Controllern zu ändern, müssen Sie Richtlinien erstellen wieder Anweisungen können durch Ihr ganzes System wiederverwendet werden.

Stick auf schlanke Controller, erstellen Sie Dienste und Anweisungen und Sie sind gut zu gehen und schließlich würde ich Ihnen empfehlen, Yeoman als Workflow zu verwenden und cg-angular Generator zu verwenden, implementiert die "Best Practices" für viele Dinge einschließlich Anwendungsordner Struktur, die sehr wichtig ist, um es von Anfang an richtig zu machen.

1

Ich denke, die beste Praxis ist es, einen Controller für jedes Formular (Ansicht) zu deklarieren. Auch können Sie Funktionen und Variablen zwischen den Controllern mit Diensten oder $ rootScope

1

i für jede Ansicht, die eine Steuereinrichtung und Strecke verwenden würde:

/user/edit, userEditController.js, userEdit.html 
/user/view, userViewController.js, userView.html 
Verwandte Themen