我发现一个特定的逻辑问题有点困难。我的问题是这样的:
我通过一些工厂方法从控制器内发送PUT请求。我想更新数据而不需要任何页面刷新。例如。 $ state.go()或$ location.path()等。对于POST和DEL,我做过类似的事情:
$scope.$on('itemRemoved', (e, item) => {
vm.allItems = vm.allItems.filter(item => {
item._id !== item._id)
})
})
$scope.$on('itemAdded', (e, item) => vm.allItems.push(item))
// For PUT, I want to do something like this..
$scope.$on('itemUpdt', (e, item) => {
vm.allItems.push(item).findIndex('index of oldItem').splice('exclude oldItem index').join(',')
})
'item'是从ajax调用返回的对象数组。上述方法对我不起作用。是否有问题或有更好的方法来解决这个问题?感谢阅读:)
答案 0 :(得分:1)
JavaScript函数user_email
实际上返回数组的新长度,而不是数组本身。因此,在push()
的返回值上调用findIndex()
可能会导致您的问题。
答案 1 :(得分:1)
您可以尝试这样的事情:
$scope.$on('itemUpdt', (e, item) => {
vm.allItems = vm.allItems.filter(item => {
item._id !== item._id;
});
vm.allItems.push(item);
});
或
const findIndex = (array, item) => {
for(let i=0; i<array.length; i++){
if(array[i]._id == item._id){
return i;
}
}
return -1
};
$scope.$on('itemUpdt', (e, item) => {
var indexToRemove = findIndex(vm.allItems, item);
vm.allItems.splice(indexToRemove, 1);
vm.allItems.push(item);
});