2014-12-17 3 views
1

내가는 아래 AngularJS와 지시했다 문제는 element.bin 안의 범위가 변수 "overState"의 값을 설정하지 않는다는 것입니다. 그것을 고치는 법.통과 범위 변수는

+0

는 질문에 오타를 driective''있습니까? 그리고 어디에서 템플릿에'myDirective'를 추가 했습니까? – putvande

+0

모듈 아래의 색인 파일에 my-directive를 추가했습니다. 범위에 대해 묻는 것은 scope.message이지만 scope.overState는 항상 비어 있습니다. –

답변

1

당신은 $scope.$apply 사용할 필요가 소화 루프를 통해 업데이트 할 수 있도록 자동으로 내장 된 지침의 대부분을

scope.$apply(function() { 
    scope.overState = true; 
}); 

각도 랩을,하지만 당신은 자신의 이벤트 (예 : mouseentermouseleave)를 결합하는 경우 다이제스트 루프를 걷어차 야합니다. 또한 사용할 수 있습니다

아래의 의견에 따라

Updated Plnkr


업데이트 각도 지시 ng-mouseenterng-mouseleave 내장 다음은 각 평가에 대해 걱정할 필요가 없습니다 너 자신의 표현.

<div class="directive-area" 
    ng-mouseleave="overState = false" 
    ng-mouseenter="overState = true"> 
    <h1>{{ message }}</h1> 
    <div ng-show="overState">Test Text</div> 
</div> 

Built-in Directives Plnkr

+0

고맙습니다. 문제는 해결되었지만 여전히 확신이 들지 않습니다. 해결책은 더 좋은 방법이라고 생각합니다. –

+0

당신이 할 수있는 또 다른 일은'ng-mouseenter'와'ng-mouseleave'를 사용하는 것입니다. 왜냐하면 그것들은 내장 된 각도 명령이기 때문입니다. 그들은 같은 일을하지만 결국. 두 가지 해결책이 마음에 들지 않는다면 행운을 빌어 요! 여기에 그 예가 있습니다 : http://plnkr.co/edit/1NIdBmenKEAC2UYoIopP –

+0

또한 다른 페이지에서 이처럼 여러 div가 있습니다. 첫 번째 페이지는 잘 작동했지만 두 번째 페이지로 이동하고 mouseover 할 때 div가 나타납니다. 오류 : [$ rootScope : inprog] $가 이미 적용 중임 –

관련 문제