使用angular.js进行ng重复时出现错误:[ngRepeat:dups]
Getting Error: [ngRepeat:dupes] in ng-repeat using angular.js
在Angular.js 中使用ng repeat没有数据时,我得到了以下错误
错误:
Error: [ngRepeat:dupes] http://errors.angularjs.org/1.4.6/ngRepeat/dupes?p0=user%20in%20objHodUserData&p1=string%3Al&p2=l
at Error (native)
at http://oditek.in/Gofasto/js/angularjs.js:6:416
at http://oditek.in/Gofasto/js/angularjs.js:279:39
at Object.fn (http://oditek.in/Gofasto/js/angularjs.js:129:128)
at n.$digest (http://oditek.in/Gofasto/js/angularjs.js:130:206)
at n.$apply (http://oditek.in/Gofasto/js/angularjs.js:133:236)
at g (http://oditek.in/Gofasto/js/angularjs.js:87:376)
at K (http://oditek.in/Gofasto/js/angularjs.js:91:448)
at XMLHttpRequest.z.onload (http://oditek.in/Gofasto/js/angularjs.js:92:462)
我在下面解释我的代码。
<tbody id="detailsstockid">
<tr ng-repeat="user in objHodUserData ">
<td>{{$index+1}}</td>
<td>{{user.user_name}}</td>
<td>{{user.email}}</td>
<td>{{user.mob_no}}</td>
<td>{{user.login_name}}</td>
<td ng-if="user.user_status==1">Enable</td>
<td ng-if="user.user_status==0">Disable</td>
<td>
<a ui-sref='hod.user'>
<input type='button' class='btn btn-xs btn-green' value='Edit' ng-click="editUserData(user.user_id)" >
</a>
</td>
<td>
<a ui-sref='hod.user'>
<input type='button' class='btn btn-xs btn-red' value='Delete' ng-click="deleteUserData(user.user_id);" >
</a>
</td>
</tr>
</tbody>
当对象objHodUserData
没有数据时,这些类型错误就来了。我尝试使用track by $index
来解决此问题。使用此错误已消失,但正在生成4个空白行。在这里,我需要当没有数据时,不会生成任何行而没有任何错误,当数据出现时,它会显示出来。请帮助我解决此错误。
我遇到了同样的问题,我通过将所有<tbody>
封装在<div>
元素中来解决它。并像一样在这个div元素中插入ng-show
<div ng-show="hasElements()">
在你的控制器中,你有一个$scope函数来检查对象中是否有这样的元素:
$scope.hasElements = function(){
return objHodUserData.length ===0;
}
这应该行得通。
如果它解决了你的问题,请告诉我。
干杯。
尝试将ng-if与ng-rerepeat一起使用。它应该是ng-if="objHodUserData.length!=0"
如果你不介意使用lodash,那么这是一个方便的javascript实用程序库,可以帮助你完成这样的任务。
var objHodUserDataWithoutBlanks = _.filter(objHodUserData, function(n) {
return n.user_name != "";
});
以上内容将筛选出用户名为空的条目。然后,你的ng重复可以在这个没有空格的对象上重复:objHodUserDataWithoutBlanks
。
编辑:仅使用angularjs:的替代方法
添加角度过滤器:
myApp.filter('nonBlankOnly', function() {
return function( items) {
var filtered = [];
angular.forEach(items, function(item) {
if(item.user_name != "") {
filtered.push(item);
}
});
return filtered;
};
});
然后在控制器中应用过滤器:
function myCtrl($scope, $filter)
{
$scope.objHodUserDataWithoutBlanks = $filter('nonBlankOnly')(objHodUserData);
}
并通过过滤项目重复:
<tr ng-repeat="user in objHodUserDataWithoutBlanks">
也许您可以使用de ng show来检查是否有现有用户,比如:
<tr ng-repeat="user in objHodUserData ">
<td ng-show="user">{{$index+1}}</td>
<td ng-show="user">{{user.user_name}}</td>
<td ng-show="user">{{user.email}}</td>
<td ng-show="user">{{user.mob_no}}</td>
<td ng-show="user">{{user.login_name}}</td>
或者,如果您希望隐藏整行,请将ng-show放在<tr>
元素上。
<tbody id="detailsstockid">
<tr ng-repeat="user in objHodUserData " ng-show="user">
<td>{{$index+1}}</td>
<td>{{user.user_name}}</td>
<td>{{user.email}}</td>
<td>{{user.mob_no}}</td>
<td>{{user.login_name}}</td>
<td ng-if="user.user_status==1">Enable</td>
<td ng-if="user.user_status==0">Disable</td>
<td>
<a ui-sref='hod.user'>
<input type='button' class='btn btn-xs btn-green' value='Edit' ng-click="editUserData(user.user_id)" >
</a>
</td>
<td>
<a ui-sref='hod.user'>
<input type='button' class='btn btn-xs btn-red' value='Delete' ng-click="deleteUserData(user.user_id);" >
</a>
</td>
</tr>
</tbody>
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- CKFinder 3为所选文件返回错误的URL
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 铬:“;未捕获的语法错误:意外的标记:"
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- Angular ngRepeat:重复错误(尽管没有重复的密钥)
- ngRepeat:重复数据消除错误,尽管没有重复
- 使用angular.js进行ng重复时出现错误:[ngRepeat:dups]
- Angular -使用$http获取数据时错误:[ngRepeat:dupes]
- 错误:[ngRepeat:iexp]期望表达式形式为'_item_ in _collection_[track
- 使用$routeParams undefined和ngRepeat:dupes错误
- angular.js:13920错误:[ngRepeat:dupes]在中继器中重复