2014-11-07 5 views
2

지시문에 NG 반복 이외의 범위를 액세스하는 방법 :내가 각도 지침과 항목의 목록을

<li ng-repeat="x in topics"> 
    <p change-content-on-click>{{ x.name }}</p> 
</li> 

app.directive('changeContentOnClick', function(TopicService) { 
    return{ 
     restrict: 'A', 
     link: function(scope, element) { 
      element.bind('click', function(){ 
       scope.message = "hello"; 
       scope.$apply(); 
      }); 
     } 
    } 
}); 

나는 클릭 된 항목으로 반복 밖에 {{ message }}을 결합하기 만하면 무엇 목록에. 어떻게해야합니까? 나는 많은 문서를 조사했지만 찾지 못했습니다. 업데이트

$scope.message = {text:""}; 

app.directive('changeContentOnClick', function() { 
    return{ 
     restrict: 'A', 
     scope: { 
      someAttr: "=" 
     }, 
     link: function(scope, element) { 
      element.bind('click', function(){ 
       scope.message = "hello"; 
       scope.someAttr.text = scope.message; 
       scope.$apply(); // not sure that you need this 
       console.log(scope.message); 
      }); 
     } 
    } 
}); 

:
이 아래 의견에 따라 고정, 당신이, 당신이 바로 캔트 깜빡하고

<li ng-repeat="x in topics"> 
    <p change-content-on-click some-attr="message">{{ x.name }}</p> 
</li> 

<div ng-bind='message'></div> <!-- same as {{message}} but less messy on failure --> 

JS 바인딩 두 가지 방법으로 데이터를 특성으로

+0

나에게 꽤 좋아 보인다. 클릭 기능이 호출 되었습니까? 예를 들어 bind 함수에서'console.log'를하면? – Jonas

+0

가 예상대로 작동하도록 업데이트되었습니다. 플 런커 – SoluableNonagon

답변

2

패스를에 문자열에 할당, 객체가 필요합니다.

http://plnkr.co/edit/1qTLzk41jzrWiGLRiZG9?p=preview

+0

을 참조하십시오. 이는 작동하지 않는다고 생각합니다. 메시지를 객체 속성으로 전달하고 점 표기법 "some-attr = someObj.message"를 사용하면 도움이 될 수 있습니다. – Alborz

+0

작동하지 않는다고 말하기 전에 테스트 해주세요. – SoluableNonagon

+0

테스트 해 보시겠습니까? – Alborz

관련 문제