2014-02-17 2 views
0

저는 최근에 Angular와 그립을 쌓아 왔고, 그 위에 구축 된 개념에 머리를 쓰려고했습니다. 지금까지 조금 이상한 모든 것 그러나 나는 거기에 가고있다!서비스 및/또는 공장을 사용할 때의 각성의 분리?

어쨌든 Angular를 사용하여 웹 사이트의 일부분을 만들었으므로 (브라우저에서 JavaScript 객체를 조작해야하므로 유스 케이스에 맞을 것으로 보입니다).

이 프로세스의 일부로 요소를 클릭 할 때 모델에 개체를 추가해야했습니다. 이 작업을 수행하는 방법을 파악하는 데는 시간이 좀 걸렸지 만 결국은 제대로 작동하게되었습니다.

var stpApp = angular.module('stpApp', []); 

stpApp.controller('multiStopController', function ($scope, $compile, $http) { 
    $scope.inboundJourney = [{ 
     'DepartureAirport': '', 
      'DestinationAirport': '', 
      'DepartureDate': '', 
      'DepartureTime': 9, 
      'Class': 'Class' 
    }]; 

    $scope.addInboundJourney = function() { 
     $scope.inboundJourney.push({ 
      'DepartureAirport': '', 
       'DestinationAirport': '', 
       'DepartureDate': '', 
       'DepartureTime': 9, 
       'Class': '' 
     }); 
    } 
}); 

최대 몇 가지 마크 : 내가 소개하기 servicesfactories의 개념을 본 적이 좀 더 읽기를하는

<li ng-repeat="journey in inboundJourney"> 
    <input type="text" class="AirportName" ng-model="journey.DepartureAirport" /> 
</li> 
<p class="addMultiStop"><span title="Add a journey" ng-click="addInboundJourney()">+</span> 
</p> 

지금 나는 아래의 코드로 끝났다. 그래서 내 addInboundJourney 함수가 서비스 나 공장에 있어야합니까, 아니면 지금 컨트롤러처럼 괜찮습니까?

컨트롤러에서 괜찮 으면 서비스 및/또는 공장을 사용할 것을 권장합니까?

+0

서비스 및 팩토리는 거의 동일하며 기본적으로 "싱글 톤"입니다. 여러 컨트롤러에 무언가를 노출하려면 service/factory를 사용하십시오. – mpm

답변

2

상당히 주관적인 질문입니다. 하나 이상의 컨트롤러에서 조작을 처리해야하는 경우 인바운드 여행 조작을 서비스로 이동하여 컨트롤러에 주입하십시오.

multiStopController에서 inboundJourneys를 조작하려는 경우라면 계속 진행하는 것이 좋습니다.

그러나 inboundJourneys 조작을위한 코드가 많다면 (컨트롤러를 뚱뚱하게 만들면서 멀티 스토리 컨트롤러에서도 다른 일을하고 싶을 수도 있습니다.) 그런 다음 서비스로 이동합니다.

+0

+1, 잘했다, 아저씨. –

0

염두에두고 염두에 두어야 할 점은 서비스 나 공장을 만들어 InboundJourney 개체로 나타내는 것이 가장 좋습니다. 이 객체에는 데이터를 조작하는 메소드도 있습니다. addInboundJourney(journey).

어떤 것을 사용할지는 사용자에게 달려 있습니다. 일반적으로 사전 초기화 코드가 필요할 때 팩토리가 사용됩니다.