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

0

Я пробовал миллион способов получить доступ к переменной 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 заранее!

  • 0
    Вам определенно следует предоставить здесь больше кода, но я скажу, что на первый взгляд вы передаете в rootScope а не $rootScope . Это может быть частью проблемы.
Теги:
elasticui

1 ответ

0

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

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

к чему-то вроде

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

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

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

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

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

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

  • 0
    Это модификация следующего кода, см. Строку 179 github.com/YousefED/ElasticUI/blob/master/dist/elasticui.js Я пытаюсь получить что-то вроде: indexCtrl.indexVM.index = $ rootScope.esIndex ; Если я выйду из $ rootScope.esIndex в контроллере страницы, я получу правильное значение, и похоже, что rootScope действительно передается в вышеприведенный родительский контроллер, однако я не могу получить к нему доступ из самой директивы. В моей версии я убил наблюдателя, чтобы упростить его, но да, с этой страницей я работаю.
  • 0
    Вам необходимо объявить внедренный сервис $ rootScope, как они это делают в строке 294, затем он может быть передан в качестве аргумента вашей функции, как показано в строке 276. Таким образом, у вас будет IndexDirective. $ Inject = ['$ rootScope']; затем функция IndexDirective ($ rootScope) .... Также уберите rootScope из аргументов функции ссылки, которая вам не нужна.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню