2013-12-23 3 views
0

저는 운이별로없는 많은 다른 것들을 시도했습니다. 기본적으로 나는 일련의 문자열 (단지 문장)을 가지고있다. 나는 그것들을 반복해서 출력해야한다. 문제 없어. 하지만 특정 단어 조합 (이 경우 '사회 보장')을 찾아서 바꿀 수 있어야하고, 링크 안에 포장하고 해당 링크에 ngClick 지시문을 추가 할 수 있어야합니다.ngrepeat에서 정적 텍스트 컨텐츠를 AngularJS의 ngclick 지시문으로 바꿉니다.

나는 지시어를 사용해야한다는 것을 확신하며, 이것은 컴파일 링 및 링크와 관련이있다. 그러나 이것에 관해서 내가 알 수있는 한 그게 전부입니다. 어떤 도움이라도 대단히 감사 할 것입니다. , http://jsfiddle.net/DotDotDot/Z9CHL/2/
나는 그것이 최선의 구현이다 모르겠지만, 적어도는 HTML 코드, 나는 사용자 정의 지시어를 하나 개의 매개 변수를 매우 간단 보낼 수있다

작동합니다

답변

0

난 당신이 뭔가를 사용할 수 있다고 생각 자바 스크립트 측면에서 전체 문장

<ul ng-repeat='sentence in list'> 
     <li><span the-dir txt="sentence"></span></li> 
    </ul> 

, 그것은 매우 간단하지만, 더 이상이다 :

.directive('theDir', function($compile){ 
var r=/(social security)/ig; 
return { 
    scope:{txt:'='}, 
    link:function(scope,element,attributes){ 
     scope.aFunction=function(){ 
     console.log('In the directive, you clicked on social security'); 
     } 
     if(r.test(scope.txt)) { 
      splitted=scope.txt.split(r); 
      console.log(splitted) 
      var newSpan=new angular.element('<span>'); 
      for(var i=0;i<splitted.length;i++) 
      { 
       if(r.test(splitted[i])){ 
        var newLink=new angular.element('<a>'); 
        newLink.attr('ng-click','aFunction()'); 
        newLink.addClass('social-security'); 
        newLink.html(splitted[i]); 
        newSpan.append(newLink); 
       } 
       else 
        newSpan.append(splitted[i]); 
      } 
      element.append(newSpan); 
      $compile(newSpan)(scope); 
     } 
     else 
     { 
     element.html(scope.txt); 
     } 

    } 

} 
}); 

정규 표현식을 사용하여 '사회 보장'문장을 모두 찾고,이 경우 전체 문장을 분리 한 다음 각 angular.element (이 경우 HTML 링크, ng- 클릭 속성). 모든 정규 단어와 원래 요소에 대한 링크를 추가 한 다음 작동 링크가있는 새로 작성한 기간을 $ n 컴파일하여 컴파일합니다.
는 그리고 난 당신이 코드를 먹자, 내가

재미

을 가지고 당신에게

도움이되기를 바랍니다
을 작동하는 것 같다
관련 문제