$ index在空数组Angular上给出错误

时间:2015-05-13 22:15:06

标签: angularjs angularjs-ng-repeat

我有以下内容:

<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评估?

2 个答案:

答案 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 }}"

找到解决方法