这是我的问题。 我试图从数组中删除一个对象,但是拼接功能似乎会导致崩溃。
$http({
method : "POST",
url : "getDatesBasket",
data: {"mission":pos_id},
async:false
}).then(function successCallback(response) {
var rep = response['data'];
var repSplit = rep.split(",");
var posSplit = repSplit[0];
var posTemp = posSplit.split(":")[1];
for (kPos = 0; kPos < $scope.datePos.length; kPos++) {
alert("BEFORE " +$scope.datePos[kPos].dateMax);
if(posTemp==$scope.datePos[kPos].pos){
alert('start suppression');
datePos.splice(kpos,1);
alert('end suppression');
}
alert("AFTER " +$scope.datePos[kPos].dateMax);
}
运行时,我会看到提醒框BEFORE
和start suppression
但不是end suppression
,它就像拼接功能使代码崩溃。
修改
这是datePos,它是一个像这样构建对象的数组 我执行ajax请求以获取一些数据,然后我将这些数据推送到选项卡中。所以这是一个带有两个键,pos和数据的对象
$http({
method: "POST",
url: "getDatesBasket",
data: {
"mission": pos_id
},
async: false
}).then(function successCallback(response) {
var rep = response['data'];
var repSplit = rep.split(",");
var posSplit = repSplit[0];
var dateSplit = repSplit[1];
var posTemp = posSplit.split(":")[1];
var date = dateSplit.split(":")[1];
var myPos = {
pos: posTemp,
dateMax: date
};
$scope.datePos.push(myPos);
答案 0 :(得分:2)
你必须拼接在你的范围内定义的同一个数组。你也在剪辑中使用小写字母。它应该是kPos
。所以你必须像这样拼接。
$scope.datePos.splice(kPos,1);
答案 1 :(得分:0)
实际上,您忘记使用 $ scope 。 这是更新的代码..
for (kPos = 0; kPos < $scope.datePos.length; kPos++) {
alert("BEFORE " +$scope.datePos[kPos].dateMax);
if(posTemp==$scope.datePos[kPos].pos){
alert('start suppression');
$scope.datePos.splice(kpos,1);
alert('end suppression');
}
alert("AFTER " +$scope.datePos[kPos].dateMax);
}
答案 2 :(得分:0)
for (kPos = $scope.datePos.length-1; kPos>=0; kPos--) {
alert("BEFORE " +$scope.datePos[kPos].dateMax);
if(posTemp==$scope.datePos[kPos].pos){
alert('start suppression');
$scope.datePos.splice(kpos,1);
alert('end suppression');
}
alert("AFTER " +$scope.datePos[kPos].dateMax);
}
尝试如上所述。