0

У меня есть 2 простых директив ...Директива Внутри другой директивы. Контроллер не может смотреть

родительская директива:

.directive('modal', [function() { 
return { 
    replace: true, 
    scope: { 
    /* attributes */ 
    }, 
    templateUrl: 'modal.tpl.html', 
    transclude: true, 
    link: function (scope) { 
    /* code */ 
    } 
}; 

ребенка директива

.directive('keypad', function() { 
'use strict'; 

return { 
    templateUrl: 'keypad.tpl.html', 
    scope: { 
     value: '=', 
    }, 

    link: function (scope, element, attrs) { 
    /* code */ 
    } 
}; 

и, наконец, контроллер :

.controller('ctrl', ['$scope', '$timeout', function ($scope, $timeout) { 
    $scope.$watch('howMuch', function(){ 
     console.log('wont work ;-('); 
    }); 
} 

и мой шаблон выглядит следующим образом:

<div modal> 
    <div keypad class="keypad" value="howMuch"></div> 
</div> 

Любая идея, почему директива ребенок не может изменить значение howMuch на контроллере? Тот же код, но без родительской директивы работает PERFECT.

ответ

0

Директива parent имеет изоляционную область. Вы не указали атрибуты области, но нужно получить доступ к howMuch через свойство в вашей изолированной области, чтобы обновить значение в области контроллера.

+0

Мне нужно что-то более общее ... иногда модальная директива содержит другие директивы или статический контент. Как я могу это сделать? – Mauro

+0

Вы, безусловно, можете это сделать, но когда вы изолируете свой охват, вы отрезаете себя от остальной сферы мира, если вы не открываете вход/выход через область изоляции. ИЛИ, вы не изолируете свою область действия ... но чаще, чем нет, вам нужна изолированная область –

Смежные вопросы