3

オブジェクトの配列であるプロパティ「プロパティ」を持つオブジェクト「メッセージ」があるhtmlページがあります。問題は、「ng-repeat」を使用して「Message.Properties」アイテムを反復処理して、angularjs で作成した特定のカスタム要素をレンダリングし、それによって ID を生成する場合です。同じ要素に対して同じ ID を取得します。タイプ。ここに私のコードのサンプルがあります:

<div data-ng-repeat="property in Message.Properties">
...
  <div ngm-if="(property.Type == 9)">                            
    <sdk:selectbox name="property.Title" row="" datafield="property.Value"
      options="property.ValueCollection" displayfield="Value" valuefield="Key"
      mandatory="property.isMandatory" labeled="property.Title" multiple="">
    </neolynk:selectbox>
  </div>
</div>

要素「sdk:selectbox」がコンパイルされ、Message.Properties に同じタイプ (例: 9) の 2 つのプロパティがある場合、生成された id (作成された html 入力の) は両方で同じです(ランダムに生成していますが)、もちろん入力ごとに異なるIDが必要です。ng-repeat が各アイテムのテンプレートのクローンを作成することを読みましたが、そうですか?! それを解決する方法は?助けていただければ幸いです。

4

2 に答える 2

7

$index内部で使用ng-repeatして、現在の行に基づいて一意のIDを作成できる場合があります。ドキュメントから取得:

次のような特別なプロパティが、各テンプレートインスタンスのローカルスコープに公開されます。

  • $ index – {number} –繰り返される要素のイテレータオフセット(0..length-1)
  • $ first – {boolean} –繰り返される要素がイテレータの最初にある場合はtrue。
  • $ middle – {boolean} –繰り返される要素がイテレータの最初と最後の間にある場合はtrue。
  • $ last – {boolean} –繰り返される要素がイテレータの最後にある場合はtrue。
于 2013-03-14T18:30:13.747 に答える
0

あなたMessage.PropertiesからIDへの変換が問題のようです。プロパティを別のオブジェクト セットに明示的に設定して ( Message.Type9 以外に設定しても)、これを実行してこれを確認しようとしましたか?

ng-repeat は各アイテムのテンプレートを複製しませんが$scope、その親から を継承するため、そこからのいくつかのオブジェクトが複数のアイテムで使用される可能性があります。

于 2013-06-07T05:57:56.813 に答える