Javascript 对象内部对象的Angularjs拼接数组始终删除最后一个对象
我有一个对象,它包含一个称为“块”的对象数组: 当我向该数组添加内容时,它的行为非常正常:Javascript 对象内部对象的Angularjs拼接数组始终删除最后一个对象,javascript,arrays,angularjs,splice,Javascript,Arrays,Angularjs,Splice,我有一个对象,它包含一个称为“块”的对象数组: 当我向该数组添加内容时,它的行为非常正常: $scope.addElement = function(a){ if(a=='heroslider'){ var data = { slides: [ { id:0, image:0, title: "Ti
$scope.addElement = function(a){
if(a=='heroslider'){
var data = {
slides: [
{
id:0,
image:0,
title: "Title",
desc: "Description",
},
{
id:1,
image:1,
title: "Title",
desc: "Description",
},
{
id:2,
image:2,
title: "Title",
desc: "Description",
}
]
};
} else if(a=='threecol'){
var data = {
columns: [
{
title: "Column one",
text: "This is a column for features",
},
{
title: "Column two",
text: "This is a column for features",
}
]
};
}
var element = {
template: a,
data: data
};
$scope.microsite.blocks.push(element);
}
但是,当我试图通过在ng上调用此函数并从ng repeat中传入对象来从数组中删除对象时
$scope.removeElement = function(element){
var x = $scope.microsite.blocks.indexOf(element);
console.log($scope.microsite.blocks[x]);
console.log(x);
$scope.microsite.blocks.splice(x, 1);
}
我能够在控制台中获得正确的对象和正确的索引,但是当它拼接数组时,最后一个对象总是被删除,这非常奇怪,因为只有当我试图删除的索引不存在时才会发生这种情况(因此等于-1)
你知道为什么会这样吗
编辑:我还尝试直接在元素中使用ng click=“microsite.blocks.splice($index,1)”,并将$index传递到函数中而不是元素中。在所有情况下,都会找到正确的索引,但结果仍然相同,只删除了最后一个条目。结果表明,这是Angular中“track by$index”的错误。从my ng repeat中删除“track by$index”后,splice()功能正常。结果表明,这是Angular中“track by$index”的错误。从my ng repeat中删除“track by$index”后,splice()功能正常
$scope.removeElement = function(element){
var x = $scope.microsite.blocks.indexOf(element);
console.log($scope.microsite.blocks[x]);
console.log(x);
$scope.microsite.blocks.splice(x, 1);
}