質問は非常に単純です。入力を一意の ID に連結する angularJs フィルターを作成するにはどうすればよいでしょうか。これは、HTML ID を生成したり、ng-repeat 内の要素のグループに一意の属性値を定義したりするのに非常に役立ちます。
注: ID は「グローバルに」一意である必要があり、Angular ng-repeat は$index
役に立たなくなります。
さて、おそらく頭に浮かぶ解決策は次のようなものです。
myModule.filter('uniqueId', function(){
var idCounter = 0;
return function(input) {
return (input || '') + (++idCounter);
};
});
そしてあなたのHTMLに次のようなものを書きます:
<div id="{{groupName | uniqueId}}">
課題は、angular がダイジェスト ループに陥ることです。これは、評価groupName | uniqueId
によって同じ値が得られることはなく、スコープが安定しないことを意味します。
最後に一つだけ。angular v1.2.27 を使用します。これは、angular 1.3 の新しい::
(つまり、1 回限りのバインド) 演算子を使用できないことを意味します。