0

このelasticuiベースのディレクティブ内からrootScope変数にアクセスする方法を100万回試しましたが、運はありませんでした。$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 を簡単に取得する方法はありますか?

事前にトンをありがとう!

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 に答える