격리 범위가있는 지시문이 있습니다 (다른 위치에서 지시문을 재사용 할 수 있도록).이 지시문을에서 사용할 때 ng-repeat
작동하지 않습니다.
이 주제에 대한 모든 문서와 Stack Overflow 답변을 읽었으며 문제를 이해했습니다. 나는 모든 일반적인 문제를 피했다고 믿습니다.
따라서 ng-repeat
지시문에 의해 생성 된 범위 때문에 내 코드가 실패한다는 것을 이해합니다 . 내 자신의 지시문은 격리 범위를 만들고 부모 범위의 개체에 양방향 데이터 바인딩을 수행합니다. 내 지시문은이 바인딩 된 변수에 새 개체 값을 할당하며 내 지시문이없이 사용되면 완벽하게 작동합니다 ng-repeat
(부모 변수가 올바르게 업데이트 됨). 그러나를 사용 ng-repeat
하면 할당이 ng-repeat
범위에 새 변수를 만들고 상위 변수에 변경 사항이 표시되지 않습니다. 이 모든 것은 내가 읽은 것을 바탕으로 예상 한 것입니다.
또한 주어진 요소에 여러 지시문이있을 때 하나의 범위 만 생성된다는 것도 읽었습니다. 그리고 priority
각 지시문에 a 를 설정하여 지시문이 적용되는 순서를 정의 할 수 있습니다. 지시문은 우선 순위별로 정렬 된 다음 컴파일 기능이 호출됩니다 ( http://docs.angularjs.org/guide/directive 에서 우선 순위 단어 검색 ).
그래서 우선 순위를 사용하여 내 지시문이 먼저 실행되고 분리 범위를 생성하고 ng-repeat
실행될 때 부모 범위에서 프로토 타입 적으로 상속되는 범위를 만드는 대신 분리 범위를 재사용 할 수 있기를 바랐습니다 . ng-repeat
문서 상태 우선 순위 레벨에서 지시어 실행합니다 1000
. 1
더 높은 우선 순위 레벨인지 낮은 우선 순위 레벨 인지 는 명확하지 않습니다 . 1
지시문에서 우선 순위를 사용했을 때 차이가 없어서 2000
. 그러나 그것은 상황을 더 악화 undefined
시킵니다. 내 양방향 바인딩이 되고 내 지시문은 아무것도 표시하지 않습니다.
내 문제를 보여주기 위해 바이올린을 만들었습니다 . priority
내 지시에 설정을 주석으로 처리했습니다 . 이름 개체 목록과 이름 개체의 이름 name-row
및 성 필드를 표시 하는 지시문이 있습니다. 표시된 이름을 클릭하면 selected
메인 스코프에 변수 를 설정하고 싶습니다 . 이름 배열, selected
변수는 name-row
양방향 데이터 바인딩을 사용 하여 지시문에 전달됩니다 .
주 범위에서 함수를 호출하여이 작업을 수행하는 방법을 알고 있습니다. 또한 selected
다른 개체 안에 있고 외부 개체에 바인딩하면 모든 것이 작동 한다는 것도 알고 있습니다. 그러나 현재로서는 이러한 솔루션에 관심이 없습니다.
대신 내가 가진 질문은 다음과 같습니다.
- 어떻게 방지 할
ng-repeat
prototypically의 상위 범위에서 상속하고, 대신 내 지시어의 분리-범위를 사용하는 것으로 범위를 만들 수? 2000
디렉티브의 우선 순위 레벨 이 작동하지 않는 이유는 무엇 입니까?- Batarang을 사용하여 사용중인 스코프 유형을 알 수 있습니까?
scope: true
지시문에 사용 하는 것이 좋습니다 . 또한 참조하십시오 (아직하지 않은 경우) stackoverflow.com/questions/14914213/… 또한 지시문이 여러 위치에서 사용된다고해서 격리 범위를 자동으로 사용해야한다는 의미는 아닙니다.