为什么我的拼接或推动它不使用AngularJS

时间:2016-06-28 13:43:21

标签: angularjs push ng-repeat splice

我正在尝试对数组进行更新,我必须首先拼接该元素,然后进行推送。我在HTML文件中使用它的列表,我正在使用ng-repeat。

vm.editTemplate=function() {
    var selectedTemplate = localStorage.getItem("selectedTemplate");
    localStorage.removeItem("selectedTemplate");
    $mdDialog.show({
        controller: 'EditTemplateCtrl',
        controllerAs: 'template',
        templateUrl: 'views/templatess/addTemplate.html',
        locals: {
            template:selectedTemplate
        }
    })
    .then(function() { },
        function(item) {
            console.log(item);
            console.log($scope.templatesArray);
            for (var i = 0; i < $scope.templatesArray.length; i++) {
            if (item.id == $scope.templatesArray[i].id) {
                $scope.templatesArray.splice(i,1);
            }
        }
    });
}

在我的HTML文件中我有这个

<div class="hover" 
     ng-repeat="list in templatesArray"
     ng-click="temp.selectUser(list)"
     ng-class="{'active': temp.selectedRow.id == list.id}"
     style=" cursor:pointer;border-bottom:1px solid #fff; margin-bottom:0;" 
     layout-align="space-around center"
     layout="row">
    <span flex="5"></span>  
    <span id="{{list.id}}" flex="90" ng-click="temp.selectTemplate(list)">
        {{list.description}}
    </span>
    <span flex="5"></span>
</div>

1 个答案:

答案 0 :(得分:0)

不要认为在同一阵列的循环内进行拼接是好的。

此外,正如此处已提到的,您应该分配splice的结果。

所以我宁愿这样做:

1. Find the index, something like following (or with the help of a 
library like underscore.js to avoir to write your own loop)

var index = -1;

for (var i = 0; i < $scope.templatesArray.length; i++) {
    if (item.id==$scope.templatesArray[i].id) {
       index = i;
    }
}

2. Then splice

if (index > -1) {
    $scope.templatesArray = $scope.templatesArray.splice(index,1);
}