2015-01-12 3 views
0

질문은 매우 간단합니다. 모든 입력을 고유 ID에 연결하는 방법은 무엇입니까? 이는 HTML id를 생성하거나 ng-repeat에서 요소 그룹에 대한 고유 속성 값을 정의하는 데 매우 유용합니다.고유 ID를 출력하는 각도 필터를 만드는 방법

참고 : ID는 '전체적으로'고유해야 앵글 ng 반복의 $index을 쓸모 없게 만들 수 있습니다. 이제

, 아마 당신의 마음에 오는 솔루션은 다음과 같이이다 :

myModule.filter('uniqueId', function(){ var idCounter = 0; return function(input) { return (input || '') + (++idCounter); }; });

하고 HTML에 당신과 같이 쓰기 : 도전은

<div id="{{groupName | uniqueId}}">

groupName | uniqueId을 평가하면 절대 값이 산출되지 않으므로 해당 각도가 다이제스트 루프로 실행됩니다.

마지막으로 한 가지. 각도 1.3.1의 새 :: (즉 한 번 바인딩) 연산자를 사용할 수 없음을 의미하는 각도 v1.2.27을 사용합니다.

체크 고유 값의 객체 : 당신은 개별 속성 대신 개체에 바인딩 할 수있는 경우

답변

2

당신은 다음과 같은 일을 할 수 있습니다. 있는 경우이를 반환하십시오. 존재하지 않으면 하나를 생성하고, 그것을 할당하고 그것을 반환한다.

myModule.filter('uniqueId', function(){ 
    var idCounter = 0; 
    return function(input) { 
     return input.$$uniqueValue || (input.$$uniqueValue = ++idCounter); 
    }; 
}); 

이 문제가 정확하게 해결되는지 확실하지 않지만 도움이 되었기를 바랍니다.

+0

데이비드에게 감사드립니다. 일부 경우이 문제가 확실히 해결되었습니다. 그러나 객체를 사용한다는 것은 uniqueId를 기존 입력 문자열 (HTML 아이디는 [A-Za-z]로 시작해야 함)에 연결할 수 없거나 다음과 같이해야한다는 것을 의미합니다. (입력. $$ uniqueValue = (입력. $$ 그룹 이름 || '') + ++ idCounter)' –

관련 문제