我有以下内容:
<table id="myid" class="class2" style="width: 100%;" >
<tbody>
<tr ng-repeat="row in detailCollection.Info" >
<td>
<a class="button " ng-click="fire({{$index}})" ng-show="!ViewMode">Upload</a><input ng-show="false" name="{{'fileSocialUpload' + $index}}" id="{{'fileSocialUpload'+ $index}}" onchange="angular.element(this).scope().setFiles(this)" class="file" type="file"/></td>
</tr>
</tbody>
</table>
当数组为空时,ngrepeat似乎是评估$index
所以它会引发错误。当ngrepeat上的数组为空时,如何避免这个$index
评估?
答案 0 :(得分:0)
您尝试使用name
生成的$index
属性略有错误。
假设您尝试为第一个元素生成名称fileSocialUpload1
,您的语法应更改为:
name="fileSocialUpload{{$index}}"
这也可以应用于生成元素id
属性值的方式。
id="fileSocialUpdate{{$index}}"
{{}}
中的语法不是普通的JS,因此并非所有表达式都会评估您希望它们的方式。
此外,您对onchange
元素的使用可能更容易阅读。
onchange="angular.element(this).scope().setFiles(this)"
可以更改为
ng-change="setFiles($index)"
避免使用.scope
从DOM获取元素的范围将避免在使用具有隔离范围的指令开始时将问题移动或将onchange
属性移动到另一个元素。
知道如何生成id
,您可以使用jQuery选择器和传入的setFiles
值在$index
函数中选择元素。
同样对于ng-click
,您希望传递$index
参数,不必使用{{}}
对其进行评估,以传递给ng-click
。< / p>
答案 1 :(得分:0)
我使用ng-attr-id="{{ 'fileSocialUpload' + $index }}"