2013-06-20 2 views
0

Пробовал так много разных способов и до сих пор не может понять это. У меня есть меню с ng-class = "{menuVisibleAnimation: menuOpen}" в шаблоне во вложенной директиве. Когда я нажимаю кнопку в родительской директиве, я хочу изменить значение menuOpen на true, но меню в дочерней директиве не обновляется?angularjs ng-class в вложенной директиве

http://plnkr.co/edit/nOunKkch0Gt8hjMWtruA?p=preview

+0

Когда я нажимаю кнопку, класс переключается и отключается для div: '

' –

+0

Идея заключается в том, что когда я нажимаю на кнопку и div и

. Как вы сказали, только просмотр div переключается, но не меню – otissv

ответ

1

Основная проблема в вашей реализации является то, что вы хотите использовать в размере $ области, чтобы разделить значение menuOpen между родителем и ребенком директивой, но ваша материнская директива имеет изолированного объем:

scope: { 
    menuOpen: '@menuOpen' 
} 

Вам необходимо объявить menuOpen в области, разделяемой обеими директивами, из-за пересылки она должна быть родительской областью родительской директивы. Таким образом, в родительской директивы вы не должны создать новую область:

scope: false, 
link: function($scope) {  
    $scope.menuOpen = false; 
    $scope.toggleMenu = function() { 
    $scope.menuOpen = !$scope.menuOpen; 
    }; 
} 

Затем openMenu доступен в директиве ребенка. Посмотрите на это в вилке вашего Plunker.

+0

Спасибо, все работает! :) – otissv