dynamic标识重复

我试图在我的ng-repeat中设置一个dynamic的id给我的div。 让我举个例子。

<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。 在这个概念中可以设置一个dynamicID吗?

PS:我曾尝试在我的控制器上创build一个计数器方法并设置一个索引,但事实certificate,angular度只能识别这个ID的最后一个值。

要回答你的问题,试试这个:

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

虽然上面的工作,这可能不是你想要的(!)。 请注意,AngularJS通过引用id来操作元素相当罕见。

你应该把注意力放在你的模型上,声明性地描述UI,让AngularJS做“剩下的事情”,而不用做“低级”的DOM操作。

我能想到的用例是将<label>元素与它们各自的<input>元素相关联,如http://jsfiddle.net/YqUAp/

那里应用了一个pkozlowski.opensource的方法

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

虽然我不确定这是否是最有效的方法。 (即使只是为了可读性)

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

如果 – 例如 – subRepeat会有一个id字段,那么你也可以在字段中重复一个dynamicid。 那将是:

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

这将把像subRepeat1,subRepeat2,ids在你的重复div

你需要在你的对象中保存索引

 results = { myJsonResults : [ { name: "abc", id: 1, subResults: [ { subName: "123", id: 1 }, { subName: "456", id: 2 }] } { name: "xyz", id: 2, subResults: [ { subName: "789", id: 1 }, { subName: "098", id: 2 }] } ] }; 

你的重复也指的是结果,断开它们,而不是使用thisResult:

 <div id="thisResult.id" ng-repeat="thisResult in results.myJsonResults"> {{ thisResult.name }} <div id="subResult.id" ng-click="saveID(subResult.id)" ng-repeat="subResult in thisResult.subResults"> {{ subResult.subName }} </div> </div>