特定のディレクティブをコンパイルする動的ディレクティブがあります。問題はコンパイル関数にあります。適切なスコープを提供する必要があります。これを行う方法を考えていますか?
以下のディレクティブの例では、「ディレクティブ」スコープの入力は動的です。たとえば<display-users data="users"/>
、ユーザーがこのディレクティブをロードするコントローラーの一部である可能性があります。
以下のコンパイルは正しく機能しますが、コンパイルされたコードを適切なスコープ (上記の場合はコントローラーのスコープ) に関連付けていないため、ユーザーは表示されません。誰か助けてください。
theApp.directive('customCompile',
function ($compile)
{
var dir =
{
replace: true, // replace the original html ? required for restrict = "M"
restrict: 'E', //can be one or more of E / A / C / M
scope:{
directive:'='
},
controller: function ($scope, $http, $attrs) // The controller for the directive
{
},
compile: function compile($element, $tAttrs, $transclude) {
return{
post: function postLink($scope, $iElement, $iAttrs){
$iElement.parent().append($compile($scope.directive.directive)($scope));
}
}
}
};
return dir;
}
);