在指令中访问rootScope

时间:2016-03-22 17:31:34

标签: javascript angularjs elasticui

我已经尝试过百万种方法从这个基于elasticui的指令中访问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设置为我想指向的索引,但我得到了#34; $ rootScope未定义"。我已经尝试将指令的scope属性设置为false,尝试在$ rootScope.esIndex上设置一个观察程序,作为链接函数返回值的一部分,但无论我做什么,我似乎都不能弄明白。

我认为对我来说问题的部分原因是这个结构从一个新的角色消化的指示角度来看有点神秘。这是一个更大的指令定义中的一个块,所以我很难掌握它。

如何在这里轻松获取$ rootScope?

提前感谢TON!

1 个答案:

答案 0 :(得分:0)

查看更多代码会有所帮助。特别是当你说“$ rootScope确实被传递”时。但是,由于这个有限的信息,你为什么不尝试改变这一行:

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

类似

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

一眼看来你的自执行功能似乎没有传递它所期望的rootScope参数。祝你好运!

编辑:还

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

应该没有美元符号。

编辑:评论有更多信息!