2016-12-08 5 views
2

私は以下の指示構造を持っています。ここ次のディレクティブ構造の下でどのように兄弟がスコープを共有しているか

<test-widget-body> 
     <test-task-list-filter> 
     </test-task-list-filter> 
     <test-task-list> 
       <test-datatable config="dtConfig" columns="dtColumns" api="dtApi"></test-datatable> 
     </test-task-list> 
</test-widget-body> 

各ディレクティブである:

テストデータテーブル

angular.module('testDatatable').directive('testDatatable', function() { 
    var directive = { 
    controller: 'testDatatableController', 
    restrict: 'E', 
    replace: true, 
    scope: { 
     config: '=', 
     columns: '=', 
     api: '=', 
    }, 
    link: lnkFunction, 
    template: '<table class="table"></table>', 
    }; 

    return directive; 

} 

testTaskList

angular.module('testTask').directive('testTaskList', function() { 
    return { 
    transclude: true, 
    restrict: 'E', 
    controller: 'testListController', 
    controllerAs: 'vm', 
    templateUrl: '/app/test/directives/test-list/test-list.html', 
    link: { 
     pre: preLink 
    } 
    }; 
    function preLink(){ 
    var dtColumns = [{ 
    ---- 
    }]; 
    var dtConfig =[]; 
    var dtApi =[]; 

    } 

} 

testTaskListFilter

angular.module('testWidgetGrid').directive('testWidgetBody', function() { 
    return { 
    templateUrl: 'test.html', 
    link: function ($scope, element) { 

} 

} 

angular.module('testTask').directive('testTaskListFilter', function() { 
    return { 
    restrict: 'E', 
    controller: 'testListFilterController', 
    templateUrl: '/app/test/directives/test-list/test-list-filter.html' 
    }; 
}); 

testWidgetBodyは、ここで私はtestListFilterControllerコントローラ内部でdtConfigdtColumnsdtApiオブジェクトにアクセスすることができますよ。 <test-task-list-filter><test-task-list>はどのようにして兄弟ですか? 誰でもこのシナリオで何が起こっているのか説明できますか?

注:ディレクティブレンダリング中にクリック操作を行わないと、そのオブジェクトにアクセスできます。

答えて

0

testTaskListFilterディレクティブとtestTaskListディレクティブの宣言を見ても、どちらもスコープが分離されていません。ディレクティブのscope: trueまたはscope: {}testDatatableのような)ディレクティブのいずれかを実行して、分離スコープを宣言できます。

したがって、独自のスコープを宣言しないディレクティブは、親のを継承します。したがって、testTaskListFiltertestTaskListは両方とも同じスコープを使用しています。これは、あなたがtestListFilterControllerコントローラ

内部アクセスdtConfigdtColumnsdtApiオブジェクトを

には、ここで理解スコープとスコープの継承

ため Angular wiki postだことができるしていることを意味し
関連する問題