2016-10-02 4 views
0

注:ui-gridは私のカスタムグリッドの名前です。混乱をおかけして申し訳ありません。カスタムディレクティブ - 親ディレクティブ内に子ディレクティブが表示されない

私は子のカスタムディレクティブを持つカスタムディレクティブを持っており、htmlでこのように呼び出されます。

<ui-grid resource="/api/data.json"> 
      <ui-gridcolumns> 
      </ui-gridcolumns> 
     </ui-grid> 

子ディレクティブは親ディレクティブで囲まれている場合は、コンソール文は印刷されませんが、子ディレクティブは親ディレクティブの外にあるとき、それだけで罰金にconsole.log印刷します。親ディレクティブ内で子ディレクティブをどのように動作させるかについての洞察は高く評価されます。

親ディレクティブ:

module.exports = function() { 
    return { 
     restrict: 'E', 
     templateUrl: 'app/ui-grid/grid.template.html', 
     link: function (scope, element, attrs) { 
      console.log('linked Grid'); 
     }, 
     controller: ['$scope', function ($scope) { 
      $scope.onthescreen = 'test value'; 
     }] 
    }; 
}; 

子ディレクティブ:

module.exports = function() { 
    return { 
     restrict: 'E', 
     templateUrl: 'app/ui-grid/gridcolumns/grid.columns.template.html', 
     link: function (scope, element, attrs) { 
      console.log('linked Grid Columns'); 
     }, 
     controller: ['$scope', function ($scope) { 
      console.log('calling Grid Columns'); 
     }] 
    }; 
}; 

全体のコードベースは、参照のためにgitです。望ましい行動の使用トランスクルーを達成するために

https://github.com/eshrinivasan/angular-gulp-browserify-boilerplate

+1

あなたの親がラップしたい場合は、それは子供たちの、子要素がwとなるように 'transclusion'を使わなければなりません親のテンプレートにリッテン。さもなければ、親テンプレート*は要素の内容を上書きし、子要素は基本的にDOMからすべて削除されます。 – Claies

+0

また、あなたの名前をここで考えてみてください。角度ライブラリー[ui-grid](http://ui-grid.info/)がすでに存在するため、多くの人があなたの質問で混乱するかもしれません。このライブラリーで何かをしようとしているように見えるかもしれません独自のカスタムディレクティブではありません。 – Claies

答えて

0

設定:

restrict: 'E', 
templateUrl: 'app/ui-grid/grid.template.html', 
link: function (scope, element, attrs) { 
    console.log('linked Grid'); 
}, 
controller: ['$scope', function ($scope) { 
    $scope.onthescreen = 'test value'; 
}], 
transclude: true 

とどこかにテンプレートで:

<div ng-transclude> 
    child directives will be placed here 
</div> 
関連する問題