2016-11-12 75 views
1

我需要從指令中更改控制器變量,然後將其更新值傳遞給ng-show。請參閱我下面的代碼:從指令更改控制器變量並將其傳遞給ng-show - Angular JS

控制器:

self.menuVisible = false; 

指令:

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

注:有在指令中更多的代碼行是不相關的問題,這就是爲什麼我使用指令代替控制器功能的原因,我可以通過ng-click來傳遞。

查看:

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

雖然沒有看到發生在該元素的點擊,當我檢查menuCtrl.menuVisible在devtools它的動作後返回true。

你能解釋一下我做錯了嗎?

在此先感謝!

+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

不客氣,祝你好運 –

相關問題