HTMLテンプレートフラグメントを使用せずに既存のngDirectiveをラップする演習を行っています。この例では、ng-show
. これには問題があることを認識しています (例: ハードコーディングitem.viewing
)。理由を尋ねるかもしれませんが、より良いイディオムがない限り、それはしばらく脇に置いておきます。機能しないことがわかりません-属性を追加してから、スコープにコンパイルします。範囲の問題はありますか?優先順位やトランスクルージョンが必要だとは思いません。
動作するコードは次のようになります。
<ul ng-repeat='item in collection'>
<li ng-show='item.viewing'>text</li>
</ul>
li
に置き換えたい
<li viewing>text</li>
angularjs ディレクティブ コードは次のとおりです。
app.directive('viewing', function($compile){
return {
restrict: 'A',
compile: function(tElem, tAttrs){
tAttrs.$set('ngShow', 'item.viewing');
return function(scope, elem, attr){
$compile(scope, elem, attr);
};
}
};
});
ここに作業バージョンがあります: http://plnkr.co/PjusCDkgt7PuXKtZowbH
愚かなことをあらかじめお詫び申し上げます。乾杯。