当我删除不是最后一个索引的索引
时,我有一个在视图中断的照片管理器型号:
var array = [{id:1, img:"index0"},{id:2, img:"index1"},{id:3, img:"index2"}]
如果我这样做..
array.splice(0);
索引1和2将被隐藏,所以当我调查时我知道索引1和2没有调整到索引0和1,这可能就是它突破的原因自从我使用ng-repeat以来的观点,我该如何解决这个问题。
<div class="col" ng-repeat="pic in pics track by $index">
<img ng-click="delete()" ng-src="https://s3-ap-southeast-1.amazonaws.com/sample/posts/{{pic.id}}/{{pic.img}}.jpg"></img>
</div>
控制器:
//HTTP REQUEST --> for brevity i didn't include the service
$scope.delete = function(){
PostService.DeletePic()
.success(function (data) {
$scope.pics.splice(index);
}).
error(function(error,status) {
})
}
答案 0 :(得分:1)
调用array.splice(0);
不会删除数组中的任何元素。
语法:
array.splice(start, deleteCount[, item1[, item2[, ...]]])
deleteCount
一个整数,指示要删除的旧数组元素的数量。如果deleteCount为0,则不删除任何元素。在这种情况下,您应该至少指定一个新元素。如果deleteCount大于从start开始的数组中剩余的元素数,则将删除通过数组末尾的所有元素。(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice)
您需要致电array.splice(0, 1);
以删除第一个元素。这应该可以解决你的“索引不调整”问题。