角接头不起作用

时间:2017-06-01 12:38:27

标签: angularjs array-splice

我的拼接代码不起作用。我试图根据数组列表中的索引从Ui中删除它。

$scope.deleteSearchResult=function(index,ruleId){
    var responsePromise = $http.post("ruleSearchDelete/"+ruleId);
    responsePromise.success(function(data, status, headers, config) {
        alert(" Rule Deleted Successfully");
        self.ruleDataList.splice(index, 1);
    });
    responsePromise.error(function(data, status, headers, config) {
        alert("AJAX failed!");
    });

}

指数& ruleDataList监视值已显示在图像链接中 https://ibb.co/cbgUav

数据从数据库中删除..只有拼接功能无法正常工作

2 个答案:

答案 0 :(得分:2)

可能index作为参数不正确。  由于你有ruleId,找到数组中该对象的索引然后拼接。

$scope.deleteSearchResult=function(ruleId){
    var responsePromise = $http.post("ruleSearchDelete/"+ruleId);
    responsePromise.success(function(data, status, headers, config) {

        for(var i=0; i < self.ruleDataList.length - 1; i++) {
            if(self.ruleDataList[i][23] == ruleId) {
                self.ruleDataList.splice(i, 1);
                break;
            }
        }

        //var index = self.ruleDataList.findIndex(x => x[23] == ruleId); // Not supported in IE
        //var index =self.ruleDataList.map(x => x[23]).indexOf(ruleId) //Supported everywhere

    });
    responsePromise.error(function(data, status, headers, config) {
        alert("AJAX failed!");
    });
}

答案 1 :(得分:0)

您的拼接正常。

问题是角度变化检测将检查他在内存中的数组是否与控制器中的数组相同。

对于通过引用检查数组相等性,angular将永远不会注意到数组已更改。

将更新后的数组复制到新引用的操作是在拼接后使用切片。

self.ruleDataList.splice(index, 1).slice(0);