Я пробовал миллион способов получить доступ к переменной rootScope из этой директивы, основанной на эластиле, с нулевой удачей. Вот директива, имея в виду, что $ rootScope действительно передается в его родительский контроллер.
var elasticui;
(function (elasticui) {
var directives;
(function (directives, rootScope) {
var IndexDirective = (function () {
function IndexDirective() {
var directive = {};
directive.restrict = 'EAC';
directive.controller = elasticui.controllers.IndexController;
directive.link = function (scope, element, attrs, indexCtrl, rootScope) {
console.log("Updated Index: " + $rootScope.esIndex);
indexCtrl.indexVM.index = scope.$eval(attrs.euiIndex);
};
return directive;
}
return IndexDirective;
})();
directives.IndexDirective = IndexDirective;
directives.directives.directive('euiIndex', IndexDirective);
})(directives = elasticui.directives || (elasticui.directives = {}));
})(elasticui || (elasticui = {}));
В другом месте я устанавливаю $ rootScope.esIndex в индекс, на который я хотел бы указать, но я получаю "$ rootScope не определен". Я попробовал установить свойство области действия директивы false, попытался настроить наблюдателя на $ rootScope.esIndex как часть возвращаемого значения функции ссылок, но независимо от того, что я делаю, я не могу понять это.
Я думаю, что часть проблемы для меня состоит в том, что эта структура немного загадочна с директивной точки зрения для более нового угловатого человека для переваривания. Это блок в гораздо большем наборе директивных определений, поэтому мне просто трудно понять.
Любые идеи, как я могу легко захватить $ rootScope здесь?
Спасибо TON заранее!
Видеть больше вашего кода поможет. В частности, когда вы говорите, что "$ rootScope действительно передается". Однако, с этой ограниченной информацией, почему бы вам не попробовать изменить эту строку:
(directives = elasticui.directives || (elasticui.directives = {}));
к чему-то вроде
(directives = elasticui.directives || (elasticui.directives = {}, rootScope));
С первого взгляда кажется, что ваша функция самоиспускания не передается параметром rootScope, который он ожидает. Удачи!
Редактировать:
console.log("Updated Index: " + $rootScope.esIndex);
Вероятно, не должно быть знака доллара.
Редактировать: Комментарии имеют гораздо больше информации!
rootScope
а не$rootScope
. Это может быть частью проблемы.