2014-05-22 1 views
1

Github에서 두 개의 AngularJS 샘플을 읽었습니다. 나는 컨트롤러를 모듈화하는 방법에 혼란 스럽다. 첫 번째는 변수 세트 (foodMeApp)이며 다시 사용합니다. 컨트롤러는 더 적은 인수가 필요합니다. 읽을 수 있습니다. 그러나 두 번째 것은 variable (foodMeApp)을 사용하지 않으며 더 많은 인수가 있습니다. 이 방법은 AngularJS 샘플에서 자주 사용되는 것 같습니다.
두 번째 방법을 사용하면 어떤 이점이 있습니까?AngularJS에서 angular.module 변수를 설정해야합니까

1. https://github.com/IgorMinar/foodme

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

foodMeApp.constant('CONFIG_A', { 
    baseUrl: '/databases/', 
}); 

foodMeApp.controller('HogeController', function HogeController($scope, CONFIG_A) { 
    console.log(“less arguments"); 
});

2. https://github.com/angular-app/angular-app

angular.module('foodMeApp', ['ngResource']); 

angular.module('foodMeApp').constant('CONFIG_B', { 
    baseUrl: '/databases/', 
}); 

angular.module('foodMeApp').controller('HogeController', ['$scope', 'CONFIG_B', function($scope, CONFIG_B) { 
    console.log("more arguments"); 
}]);

답변

1

angular.module 때문에 ('...'), 정수, 제공, 제어기, 공장 ... 동일한 mdoule를 반환 당신이 원하는 경우 모듈 메소드 호출을 연결할 수 있습니다 ... 자바 스크립트입니다.

당신은 다르지하지 않습니다

angular.module('foo',[]) 
.controller('bar',function(){}) 
.service('baz',functinon(){}) 
.constant('buzz',something) 
.value('bizz',somethingelse); 

쓸 수 있습니다.

0

이 예제에서는 컨트롤러에 주입 할 종속성에 대한 배열을 사용하고 있습니다. 배열 메서드는 일반적으로 코드가 일부 시간에 축소 될 때 사용되며 angularjs는 정확히 어떤 항목을 주입할지 알 수 있습니다. 이 배열이 없으면 각도는 함수에 주입 된 항목으로 'a', 'b'만 볼 수 있으며 그 항목이 무엇인지 파악할 수 없습니다. 배열의 항목은 문자열이며 축소가 발생하면 변경되지 않습니다.

angular.module('foodMeApp').controller('HogeController', ['$scope', 'CONFIG_B', 
    function($scope, CONFIG_B) { 
     console.log("more arguments"); 
    }]); 

희망 사항은 사용자가 본 차이점을 설명하는 데 도움이됩니다.

0

두 번째 옵션에는 '장점'이 없습니다. 1 차 접근 방식은 반복적으로 반복하지 않으므로 많이 사용됩니다. angular.module('foodMeApp'). "foodMeApp"라는 이름을 사용하면 두 번째 접근 방식에서 사용한 것처럼 foodMeApp을 직접 사용할 수 있습니다. 반복 횟수가 적고 수명이 짧습니다.

+0

첫 번째 양식을 사용하면 전역 JavaScript 변수가 도입됩니다. 따라서 "더 간단"하지만 반드시 "옳은 것은 아닙니다"... –

+0

글로벌 변수로 플러스 포인트를 만들지 않습니까? –

+0

아니요, 제 세계에서 글로벌 상태는 장점이 아닙니다. –

관련 문제