我正在尝试对数组进行更新,我必须首先拼接该元素,然后进行推送。我在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>
答案 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);
}