48

ng-repeat 内の div に動的 ID を設定しようとしています。例を示しましょう。

<div id="$index" ng-repeat="repeat in results.myJsonResults">
    <div id="$index" ng-click="saveID($index)" ng-repeat="subRepeat in results.myJsonResults.subresults">
</div>

私の問題は、子の div をクリックすると、親の ID 名を取得したいのですが、angular が ID を div に適切に設定していないように見えます。この概念で動的 ID を設定することは可能ですか?

PS: 過去に、コントローラーでカウンター メソッドを作成してインデックスを設定しようとしましたが、Angular は代わりにこの ID の最後の値のみを認識することがわかりました。

4

4 に答える 4

72

あなたの質問に答えるには、これを試してください:

<div id="{{$index}}" ...>

上記は機能するはずですが、これはあなたが本当に望んでいるものではないかもしれません (!)。これは、AngularJS で要素を ID で参照して操作することはかなりまれであることに注意してください。

モデル、宣言型 UI の記述に集中し、低レベルの DOM 操作を「手動で」行うことなく、AngularJS に残りを任せる必要があります。

于 2013-03-08T19:33:52.943 に答える
35

http://jsfiddle.net/YqUAp/に見られるように、私が考えることができるユースケースは<label>、要素をそれぞれの要素に関連付けることです<input>

そこに適用される pkozlowski.opensourceのメソッド

<label for="{{ 'textField-' + $index }}">Option {{ $index }}</label>
<input type="text" id="{{ 'textField-' + $index }}" ng-model="field"/>

これが最も効果的な方法であるかどうかはわかりませんが。(読みやすさだけでも)

于 2013-09-11T21:15:46.183 に答える
8
<div id="{{$index}}" ...>

うまく機能しますが、たとえば subRepeat に id フィールドがある場合は、フィールドを繰り返して動的な id を配置することもできます。それは次のようになります。

<div id="subRepeat{{subRepeat.id}}" ...>

これにより、subRepeat1、subRepeat2、...などのIDが繰り返されるdivに配置されます

于 2015-05-21T08:09:43.247 に答える