0

ここ StackOverflow に関するすべての同様の質問とは正反対のような状況に遭遇しました。

私はディレクティブを持っています。これは、何らかの<scroll>スクロール可能なコンテンツでコンテンツをラップするだけです。div多かれ少なかれ次のようになります。

.directive('scroll', ['$document','$parse', function ($document,$parse) {
return {
    restrict: 'E',
    replace: true,
    transclude: true,
    scope:false,
    template:
        '<div class="scroll">' +
            '<div class="content" data-ng-transclude>' +
            '</div>' +
        '</div>',
    link: function (scope, element, attr) {
        // some code here....
    }
};
}]);

これはそれ自体でうまく機能します。

ここで、分離されたスコープ<editor>を持ち、そのテンプレート内で使用するという別のディレクティブがあります。多かれ少なかれ次のように見えます:<scroll><editor>

.directive('editor', ['$document', function ($document){
return {
    restrict: 'EA',
    replace: true,
    transclude: false,
    scope:true,
    template:
        '<div>' +
            '....<scroll>....</scroll>....' +
        '</div>',
    link: function (scope, element, attrs) {
        .....
    }
};
}]);

さて、これが取り引きです:のリンク関数<editor>内から のスコープにアクセスする必要があり<scroll>ます (「ここにコードがあります」と書かれています) が、何らかの理由でアクセスできません。の link 関数のscope変数<scroll>はほとんど空で、邪魔になると思われる をscope.$parentスキップして、上記のコントローラーを提供します。<editor>

ng-transcludeのさまざまな場所で遊ん<editor>で試してみましたが$emit、これについては本当にわかりません-スコープの分離は、「私と私の下のすべて」を上から分離すると思いますが、スコープの分離には時間がかかるようですスコープツリーから「私」...

これが十分に明確であることを願っています、ありがとう。

4

1 に答える 1