1

지시어는 주로 DOM 상호 작용과 템플리트에 대해주의해야합니다. $scope과 관련된 어플리케이션 로직을 설정하는 것은 컨트롤러의 책임입니다.컨트롤러가없는 지시어 범위를 사용하는 것이 적절한 경우는 언제입니까?

그러나 각도는 { scope: true }과 같이 지시문 자체에 대한 범위를 만들 수 있습니다. 이렇게하면 컨트롤러 생성자에서와 같이 포스트 링크 함수 에서처럼 초기화 할시기는 언제입니까? 이것은 지시어를 부적절하게 사용하는 것처럼 보입니다. DOM과 관련이 없기 때문입니다.

대신 해당 지시어와 함께 사용해야하는 컨트롤러를 만드는 대신 Angular 지시어 범위를 사용하는 것이 적절합니까?

+0

지시문의 로컬 범위는 지시문 로컬 변수에 사용됩니다 ... 지시문에서 새 구성 요소를 인스턴스화하여 로컬 범위에 바인딩해야하는 경우 지시문 범위를 사용하십시오. 지시문 외부의 변수와 상호 작용해야하는 경우 컨트롤러의 범위를 사용하십시오. 그렇습니다, 당신은 포스트 연결 기능에서 그것을 instanciate. – Galdo

답변

1

그러나 Angular를 사용하면 {scope : true}와 같이 과 같은 지시문 자체의 범위를 만들 수 있습니다. 이렇게하면 컨트롤러 생성자 에서처럼 을 초기화 할 때가 언제입니까? - 포스트 링크 기능에서? 이는 지시문을 부적절하게 사용하는 것처럼 보입니다. DOM과 관련이 없기 때문입니다.

지시어는 controller 옵션에 의해 정의 자체 컨트롤러를 가질 수 있습니다. 이 컨트롤러는 응용 프로그램 컨트롤러와 동일한 기능을합니다. 지시문에 동작을 제공합니다. 즉, 범위를 초기화하는 올바른 위치는 링크 함수가 아니라 지시문의 컨트롤러라고 생각합니다.

지시어의 컨트롤러는 지시어의 링크 기능과 범위를 조작하는 곳으로 생각합니다. DOM을 조작하는 곳입니다. 이 SO question에는 좋은 통찰력이 있습니다.

경우 대신 해당 지시자와 함께 사용되어야하는 제어기를 만드는 대신 의 각도 지향성 범위를 사용하는 것이 적절하다? 나는 두 가지 시나리오를 생각할 수 내 머리 위로 떨어져

는 :

  • 당신은 당신의 지시가 상위 범위를 액세스하려는하지만 부모 범위의 데이터를 수정하지 않습니다. 이를 수행하려면 지시문을 자체 범위 (예 : scope: true)로 설정해야합니다.
  • 지시문을 재사용 할 수 있습니다. 이 경우 지시문은 상위 범위를 사용해서는 안되며 자체 분리 범위 (예 : scope: {})를 가져야합니다. 나는 최근에 지침을 구현하고 행동하고 DOM을 조작하기위한 링크 기능을 구동하는 컨트롤러 기능을 사용했습니다

. 아마 당신은 그것을 조사하는 것에 흥미가있을 것입니다. 링크 here.

+0

고마워요, 그 일을 명확하게하는 데 도움이됩니다. – Edward

관련 문제