0

我已经尝试了一百万种方法来从这个基于 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 设置为我想指向的索引,但我得到“$rootScope is not defined”。我尝试将指令的范围属性设置为 false,尝试在 $rootScope.esIndex 上设置一个观察者作为链接函数返回值的一部分,但无论我做什么,我似乎都无法弄清楚。

我认为对我来说问题的一部分是,从指导的角度来看,这种结构对于一个新的有角的人来说有点神秘。这是一组更大的指令定义中的一个块,所以我很难掌握。

有什么想法可以在这里轻松获取 $rootScope 吗?

提前感谢一吨!

4

1 回答 1

0

查看更多代码会有所帮助。特别是当你说“$rootScope 确实被通过了”时。但是,有了这些有限的信息,您为什么不尝试更改此行:

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

类似于

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

乍一看,您的自我执行函数似乎没有被传递给它期望的 rootScope 参数。祝你好运!

编辑:还有

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

可能不应该有美元符号。

编辑:评论有更多信息!

于 2016-03-22T17:36:07.160 回答