我搜索过与此类似的问题,但没有找到。我有一个服务,它为项目列表执行$ http获取,以及调用该服务并将列表绑定到$ scope的控制器。在我的页面上,我使用ng-repeat列出项目,但由于一些奇怪的原因,它列出了2473项,即使数据库中没有。
service.js
getTickits : function() {
var deferred = $q.defer();
$http.get('/api/tickits').success(function(data){
deferred.resolve(data);
})
.error(function(data){
deferred.reject(data);
});
return deferred.promise;
}
controller.js
$scope.tickits = [];
$scope.getTickits = function(){
TickitService.getTickits().then(function (data) {
$scope.tickits = data;
})
}
$scope.getTickits();
然后在我的页面上:
<div id = "tickit-list" class="row">
<div class="col-sm-8 col-sm-offset-2">
<div class="panel panel-primary" ng-repeat="tickit in tickits track by $index">
<div class="panel-heading">
<h4>Title: {{ tickit.title }}</h4>
</div>
<div class="panel-body">
<p>Description: {{ tickit.description }}</p>
</div>
<div class="panel-footer">
<a href="#" class="btn btn-primary" ng-click="deleteTickit(tickit._id)">Delete tickit</a>
</div>
</div>
</div>
</div>
我添加'track by $ index'的原因是因为没有我在chrome控制台上出现错误,说“不允许在转发器中重复”。使用'track by'表达式指定唯一键'。
我真的不知道它是如何认为有超过2千件物品所以如果有人有任何想法会非常有帮助,谢谢!