Angularjs destroy()显示控制台错误,但有效吗?

Angularjs destroy()显示控制台错误,但有效吗?,angularjs,Angularjs,我使用destroy()函数如下: $scope.Cities[i].destroy(); 然后,当我使用它时,我的应用程序工作正常,但控制台显示: $scope.Cities[i] is undefined 然而,没有它,它就无法工作。我应该忽略这个错误吗 更多代码 $scope.Somefunction= function (id) { for (var i = 0; i < $scope.Cities.length; i++) { if ($scope.C

我使用
destroy()
函数如下:

$scope.Cities[i].destroy();
然后,当我使用它时,我的应用程序工作正常,但控制台显示:

$scope.Cities[i] is undefined
然而,没有它,它就无法工作。我应该忽略这个错误吗

更多代码

$scope.Somefunction= function (id) {
    for (var i = 0; i < $scope.Cities.length; i++) {
        if ($scope.Cities[i] == id) {
            $scope.SpliceCities(i);
            $scope.Cities[i].destroy();

        } 
    }

    $scope.SpliceCities = function(i) {
        $scope.Cities.splice(i, 1);
    };
}
$scope.Somefunction=function(id){
对于(变量i=0;i<$scope.Cities.length;i++){
if($scope.Cities[i]==id){
$范围.城市(一);
$scope.Cities[i].destroy();
} 
}
$scope.cities=功能(i){
$scope.Cities.splice(i,1);
};
}

函数在ng单击country时被调用。

splice
变异数组,因此在调用
destroy()
时,
i
索引指向另一个元素。如果
i
指向拼接前的最后一个元素,则会出现此错误。幸运的是,
splice
还返回作为数组拼接出来的元素,因此请尝试以下操作:

$scope.Somefunction = function (id) {
    for (var i = 0; i < $scope.Cities.length; i++) {
        if ($scope.Cities[i].id == id) {
            var spliced = $scope.Cities.splice(i, 1);
            spliced[0].destroy();
            break;
        } 
    }
}
$scope.Somefunction=函数(id){
对于(变量i=0;i<$scope.Cities.length;i++){
if($scope.Cities[i].id==id){
var拼接=$scope.Cities.splice(i,1);
已拼接[0]。销毁();
打破
} 
}
}

发生了什么事?密码在哪里?我们有0个上下文,无法帮助您@我的代码中没有什么不寻常的东西,但这里..伊萨莫维奇,这不是重点。关键是,没有上下文的零代码和一个简短的问题可能会被视为低质量,并可能导致问题禁令。@Cinch补充道AngularCode@AlminIslamovic您想使用
.destroy()
执行的操作在作用域变量上没有像
.destroy()
这样的方法。。“works”是删除它,一切正常,但相同的控制台错误:拼接未定义如果您没有忘记在
拼接
之前的
var
,则意味着它需要在数据销毁后中断循环。原因与答案相同,因为拼接
i
指向错误的元素。编辑后,再次出现相同的错误。。我试图使拼接的全局变量,没有。。错误依然存在:/n您可能必须发布一个提琴/plunk。由于某种原因,它不起作用,但这是代码。。