拼接功能不起作用
Splice function isn't working
这是我的问题。
我正在尝试从数组中删除一个对象,但拼接函数似乎会引发崩溃。
$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 和 data
$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);
你必须拼接在你的 scope.And 上定义的同一个数组你也在你的 splice.It 中使用小写字母应该是 kPos
。所以你必须像这样拼接.
$scope.datePos.splice(kPos,1);
实际上,您忘记使用 $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);
}
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);
}
按上面的方法试试
这是我的问题。 我正在尝试从数组中删除一个对象,但拼接函数似乎会引发崩溃。
$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 和 data
$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);
你必须拼接在你的 scope.And 上定义的同一个数组你也在你的 splice.It 中使用小写字母应该是 kPos
。所以你必须像这样拼接.
$scope.datePos.splice(kPos,1);
实际上,您忘记使用 $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);
}
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);
}
按上面的方法试试