банальный компонент, внутри его контроллера банальная функция:
var $ctrl = this;
function open() {
$ctrl.is_open = true;
}
В шаблоне на $ctrl.is_open завязан ng-show.
Если я вызываю эту функцию из самого компонента (просто хардкодом из контроллера или по ng-click на каком-нибудь элементе) - то все нормально.
А вот если она вызывается коллбеком из местной реализации Event Emitter'a (навроде ee.on( 'my-event', open )), то начинается интересное:
- функция отрабатывает
- присваивает $ctrl.is_open = true;
- нифига не обновляет шаблон
В принципе, логично бы все валить на EventEmitter но:
1) в нем нет ничего замороченного, он просто проходит по массиву подписчиков и вызывает коллбеки
2) функцию то он вызывает нормально
3) в куче аналогичных мест - все работает как часы
$scope.$apply(); и прочую подобную магию применял, дебаггером по коду ходил. Нифига.
Есть у кого-нибудь хоть какие-то мысли, в какую сторону копать?
transclude true?
попробуй в $timeout обернуть
scope apply точно, не правильно готовишь
Поищи ng-if и прочие директивы с закрытые скоупы в соотв шаблонах
Обсуждают сегодня