Доступ к rootScope в директиве

Я пробовал миллион способов получить доступ к переменной 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 не определен". Я попытался установить для свойства scope директивы значение false, попытался настроить наблюдатель на $rootScope.esIndex как часть возвращаемого значения функции ссылки, но, что бы я ни делал, я не могу понять это.

Я думаю, что часть проблемы для меня заключается в том, что эта структура немного загадочна с директивной точки зрения для более молодого человека, которому нужно переварить. Это блок в гораздо большем наборе определений директив, поэтому мне сложно понять.

Любые идеи, как я могу легко получить $rootScope здесь?

Спасибо за тонну заранее!

1 ответ

Видеть больше вашего кода поможет. В частности, когда вы говорите "$rootScope действительно передается". Однако, с этой ограниченной информацией, почему бы вам не попробовать изменить эту строку:

(directives = elasticui.directives || (elasticui.directives = {}));

что-то вроде

(directives = elasticui.directives || (elasticui.directives = {}, rootScope));

На первый взгляд кажется, что ваша самозапускающаяся функция не получила ожидаемого параметра rootScope. Удачи!

редактировать: также

console.log("Updated Index: " + $rootScope.esIndex);

Вероятно, не должно быть знака доллара.

редактировать: комментарии имеют гораздо больше информации!

Другие вопросы по тегам