1

ng-repeat を適用する角度ディレクティブがあります。ディレクティブの目的は、元のディレクティブに渡された値に基づく別のディレクティブと自分自身を交換することです。

<content-type-directive type="item.type" ng-repeat="item in items"></content-type-directive>

になる

<type1-specific-directive></type1-specific-directive>
<type2-specific-directive></type2-specific-directive>
<type1-specific-directive></type1-specific-directive>
<type1-specific-directive></type1-specific-directive>
...

完全な例: http://jsfiddle.net/qPGZ8/6/

これは、2 番目のディレクティブの html を最初のディレクティブのラッピング要素内でレンダリングできる場合は簡単ですが、この場合、元のアイテムを実際に置き換える必要があります。

これは、ディレクティブ内のテンプレートのカスタマイズに関連しています

Misko の回答で、彼は element.replaceWith() を使用して元の html を交換する方法を説明しています。これは、アイテムが ng-repeat に含まれていない場合は正常に機能しますが、ng-repeat 内では、ng-repeat が新しい要素でそれ自体を更新する機能が壊れます。

4

1 に答える 1

1

バグhttps://github.com/angular/angular.js/issues/2151に関連しています。最新バージョン1.2.0にアップグレードすると修正されます。

ところで、ボタンはコントローラーのスコープに配置する必要があります。それがタイプミスだったことを願っています。

Demo

于 2013-09-16T19:26:52.123 に答える