を使用した場合に一意のIDを追加します。このディレクティブは、フォーム要素を作成するために、1ページ内で複数回使用されてディレクティブは、私は私のアンギュラアプリケーションでカスタムディレクティブを定義した複数回
app.directive('foobarDirective', function() {
return {
restrict: 'E',
templateUrl: 'foobar.html'
};
});
。ただし、一度に1つのインスタンスしか表示されません。
問題は、フォームに入力フィールドを参照するラベルがあることです。ディレクティブが複数回使用されるため、IDはもはやユニークではなく、ラベルのfor
-mechanismは失敗します。
<div class="row">
<div class="col-md-12">
<label for="foobar" translate="foobar"></label>
<span class="label label-danger" ng-show="model.foobar.length > 255" translate="warn_too_long"></span>
<textarea id="foobar" auto-height
type="text" class="form-control"
ng-model="model.foobar"></textarea>
</div>
</div>
私はこれについて何かできることはありますか?別の記事では、id="foobar_{{$id}}"
を使用して一意のIDを追加することができますが、私のケースでは、label
とtextarea
に異なるIDが追加されています。だから、これは私にとって大きな助けにはならない。
//編集1:マイラベルと警告が拡張子をアンギュラ翻訳使用して翻訳されています。これにより、各要素の期待値が異なる$id
という異なる要素が発生しました。
//編集2:さらに、各ディレクティブに複数のラベルとテキストフィールドがあります。私は最終的に、ディレクティブごとのIDを維持し、ラベルとテキストフィールドの各ペアに固有のプレフィックスを付加することで、私の問題を解決することができました。参照してください:https://jsfiddle.net/7pxn5cxu/14/
、私は別のIDを取得します。例えば、 '' _170''はラベルのidに付加され、 '_3'はテキストフィールドのidに付加されます。だから私のコードでは、各DOMノードは個々のIDを取得します。 – user1438038
私は角度1.4.7を使用していますが、この動作は他のバージョンでは多分違いますか? – user1438038
@ user1438038 - 私の例に見られるように、変更すべきではありません。とにかく、ユニークなUUIDを使って(サービスを通じて)アプローチを更新しました。この方法で、すべてのチームでユニークなディレクティブIDを使用していることを確認し、AngularJs '$ id'に頼らないようにします。これは役に立ちますか? –