2016-11-12 1 views
1

지시어에서 컨트롤러 변수를 변경 한 다음 업데이트 된 값을 ng-show로 전달해야합니다. 아래에 내 코드를 참조하십시오 :컨트롤러 변수를 지시문에서 변경하여 ng-show에 전달 - 각도 JS

컨트롤러 :

self.menuVisible = false; 

지침 :

icon.bind('click', function(){ 
    scope.menuCtrl.menuVisible = true; 
}) 

참고 :이 질문에 관련이없는 지시어에 더 많은 코드 라인, 그리고 이것이 ng-click으로 전달할 수있는 컨트롤러 함수 대신 지시문을 사용하는 이유입니다.

보기 : 보이는 아무것도 요소 클릭에서 발생하지 않지만, 내가 DevTools로의 menuCtrl.menuVisible를 확인할 때 작업 후 true를 돌려

<div class="menu-item" ng-show="menuCtrl.menuVisible"></div> 
<div class="icon" my-directive></div> 

.

내가 뭘 잘못하고 있는지 설명해 주시겠습니까?

미리 감사드립니다.

+0

이'메뉴 item'이 경우에도 'menuCtrl.menuVisible = TRUE'표시되지 않는 이유는 무엇입니까? –

+0

아니요, 그렇지 않습니다. 컨트롤러에 별도의 함수를 만들고 ng-click을 사용하여 함수를 적용했는지 확인했습니다. 작동하며이 옵션을 사용할 수 있지만 지시문을 사용하여 동일한 작업을 수행하는 방법을 알고 싶었습니다. 미래를 위해서. –

+0

지시어 내에서'menuCtrl'을 어디에서 가져 옵니까? 어떻게 코드 범위를 추가했는지 보여주기 –

답변

1

당신이 $digest 루프 내부에 변수를 업데이트하지 않는 대부분의 경우,이 같은 시도 :

icon.bind('click', function(){ 
    $scope.$apply(function() { 
     scope.menuCtrl.menuVisible = true; 
    } 
}) 
+0

네, 맞습니다. 이것에 대해 읽을 필요가 :) 당신의 도움을 많이 주셔서 감사합니다! 그것은 효과가있다! –

+0

환영합니다. 행운을 빈다. –

관련 문제