2014-09-19 3 views
0

는 일반적으로 지시어는 예를 들어, 범위에 데이터를 사용합니다 :Angularjs : 컨트롤러 및 지시문을 사용하는 올바른 방법입니까?

<div my-directive 
    data-x='x' 
    data-y='y' 
    data-z='z' 
    ...> 
</div> 

그러나, 지침의 인수는 매우 빠르게 성장한다. 그래서 저는 그것들을 모델 클래스에 넣었습니다. 그래서 각 지시어는 자신의 모델 클래스입니다. 컨트롤러에서

<div my-directive 
    data-model='myDirectiveModel'> 
</div> 

, 난 그냥

$scope.myDirectiveModel = { 
    x: 100. 
    y: 200, 
    add: function(){ 
     return this.x + this.y; 
    } 
}; 

이 컨트롤러를 사용하고 지시어하는 올바른 방법인가를 설정해야합니까?

+1

아마 그것은 꽤 주관적입니다 ... 어쨌든, 나는 이런 종류의 문제를 해결하기 위해이 패턴을 사용했습니다. 그래서 나는 그것으로 괜찮을 것입니다. –

+0

구성 규칙을 사용할 때까지 함수에 대한 최대 인수 수를 포함하는 것이 코딩 규칙에 일반적입니다. 세 가지 가장 중요한 인수를 명시 적으로 지정하고 다른 것은 config 객체 내에 암시 적으로 넣기를 원할 수 있습니다. 나는 이것이 주관적이라고 동의한다. – eddiec

답변

1

확실히 마크 업에 많은 속성을 갖는 것보다 데이터를 지시문에 전달하는 더 깨끗한 방법입니다.

그러나 Angular에 대한 좋은 점 중 하나는 선언적 구문임을 제안합니다. 언제나 독점적으로 제안한 것을 수행한다면 몇 달 안에 마크 업을 다시 읽으려고 할 때 코드를 조사하여 무슨 일이 일어나는지 살펴야합니다. 마크 업에서보다 명확하게 표현하면 시간을 절약 할 수 있습니다. 예를 들면 다음과 같습니다.

<div my-directive show-chickens="yes" chimp-count="monkeys" /> 

마크 업을 읽을 때 숨김이 표시되지 않습니다. 그러나

, 당신은 당신의 접근 방식에 만족하고 계속하려는 경우, 그냥 그렇게 같은 지시 속성의 값으로 모델을 선언합니다 ...

<div my-directive='myDirectiveModel' /> 

그냥 더욱 깨끗하게 만들기 .

+0

장단점을 지적 해 주셔서 감사합니다. – Zach

+0

언제든지 문제는 없습니다.) – Fordio

관련 문제