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>