2014-11-18 14 views
5

Jestem z tła asp.net mvc i niedawno zacząłem od Angularjs. Mam prosty podmiot o nazwie Account, który jest odsłonięty za pośrednictwem interfejsu API RESTful ASP.NET api. Teraz tworzę stronę klienta z Angular. Po stronie klienta mam widoki takie jak tworzenie, edycja, lista i szczegóły.Czy powinien być jeden kontroler na widok w Angularjs?

Czy powinienem tworzyć kontroler dla każdego widoku, czy powinien istnieć tylko jeden kontroler o nazwie `accountsController 'dla wszystkich operacji CRUD? Jaka jest standardowa praktyka w tym scenariuszu?

Odpowiedz

3

Nie szukaj kontrolerów w kategoriach "operacji" takich jak CRUD, w tym przypadku yu "rozmawiają z restrykcyjnym API", ponieważ spokojne usługi używa czasowników HTTP mapować operacje CRUD, jak:

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

dobrą praktyką jest stworzenie usługi kątowych i powrócić dolarów zasób do późniejszego użycia, mapować $ zasób do końcowych CRUD tak:

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' 
      } 

     }); 
    } 
]); 

możesz ponownie używaj tej usługi i wstrzykuj ją w jakiejkolwiek innej usłudze lub kontrolerze, tym lepiej im szczuplejsze sterowniki.

w przypadku, gdy chcesz zmodyfikować interfejs użytkownika, ponieważ kątowy jest deklaratywny i nie jest konieczne, aby zmienić domenę od kontrolerów, musisz utworzyć dyrektywy, aby ponownie dyrektywy mogły zostać ponownie użyte w całym systemie.

Trzymajcie się smukłych kontrolerów, twórzcie usługi i dyrektywy i dobrze jest iść, a na koniec polecam używać yeomana jako workflow i używać generatora cg-angular, implementuje on "najlepsze praktyki" dla wielu rzeczy, w tym folderu aplikacji struktura, która jest bardzo ważna, aby od samego początku była odpowiednia.

1

Myślę, że najlepszą praktyką jest deklarowanie jednego kontrolera dla każdego formularza (widok). Możesz także udostępniać funkcje i zmienne między kontrolerami korzystającymi z usług lub $ rootScope

1

chciałbym użyć jednego kontrolera i trasy za każdym widoku:

/user/edit, userEditController.js, userEdit.html 
/user/view, userViewController.js, userView.html 
Powiązane problemy