Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态id-ng重复_Javascript_Html_Angularjs - Fatal编程技术网

Javascript 动态id-ng重复

Javascript 动态id-ng重复,javascript,html,angularjs,Javascript,Html,Angularjs,我正在尝试在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

我正在尝试在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的最后一个值。

要回答您的问题,请尝试以下方法:

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

虽然上述方法应该有效,但这可能不是您真正想要的(!)。请注意,AngularJS很少通过引用id来操作元素


您应该专注于您的模型、声明式描述UI,并让AngularJS在不“手动”进行低级DOM操作的情况下完成其余的工作。

我能想到的一个用例是将
元素与其各自的
元素相关联,如中所示

有一种方法

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


工作正常,但如果(例如)subRepeat有一个id字段,则也可以放置一个重复字段的动态id。 这将是:

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


这将放置像subRepeat1、subRepeat2这样的ID。。。在重复的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>

{{thisResult.name}
{{subResult.subName}

你有没有一些好的例子来说明同样的行为方式好吗?@Marceloduend你必须先解释一下你想做什么,从功能上讲。。。一个工作平台是理想的。同意。需要在中继器中设置id肯定是一种代码气味。我假设您将出于某种原因使用jquery,如果这是正确的,那么您应该为that@Sharondio实际上,我怀疑这里的用例是选择一个“active”div——不管active是什么意思——所以我不确定是否会涉及到ngModel。无论如何,如果没有问题作者提供的更多信息,就无法判断。有时第三方库需要id字符串,在这种情况下,我们需要唯一的id。您不能在页面中重复id,您正在这样做。为什么你甚至需要一个ID?在angular 1.2rc3I中,这似乎不起作用(特别是对于带有ng选项的select元素),我也是出于同样的原因这样做的。新的
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 }] }
                            ] };
<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>