元素删除工作正常。问题是ng-repeat不会自动更新自己。(我必须刷新页面以反映更改。)
<tr ng-repeat="error in filterErrors=(latestErrors
| filter:{ Source:SearchSource} )
| orderBy:predicate:reverse
| filter:{ ErrorId:SearchErrorId,Application:SearchApplication}
| startFrom:currentPage*pageSize| limitTo: pageSize">
<td ><input type="checkbox" ng-model="error.checked" ng-click="deletingIsReady()"/></td>
<td >{{error.Host}}</td>
<th >{{error.Type}}</th>
<th >{{error.Source}}</th>
</tr>
服务: errorReporter.factory('dataService', function ($http,$q) {
var _deleteErrors = function (arrayOfErrors) {
var deferred3 = $q.defer();
var dataString = {
arrayOfErrors: arrayOfErrors
}
$http.post(ROOT + 'Home/DeleteErrors', dataString, { cache: false }).
then(function (data, status, headers, config) {
deferred3.resolve();
}, function () {
deferred3.reject();
});
return deferred3.promise;
}
return {
getLatestErrors: _getLatestErrors,
}
});控制器功能:
dataService.deleteErrors(arrayOfErrors).then(function () {
var elementId=0;
angular.forEach($scope.filterErrors, function (object) {
elementId++;
angular.forEach(arrayOfErrors, function (obj,index) {
if (object.ErrorId == obj)
{
console.log($scope.filterErrors.length);
$scope.filterErrors.splice(elementId, 1);
console.log($scope.filterErrors.length);
}
})
});
})
切片工作良好,我在控制台日志,例如100,99 .注意控制台日志几行以上,但无论如何,我的ng-repeat不更新。
您可以将JavaScript长度属性重置为比之前少1,并且它应该更新。例如,如果你在一个有5个键的数组上重复(无论它们是字符串还是对象),在你删除其中一个键后,将数组长度设置为4。
var array = [
{value: 'value1', label: 'Value 1'},
{value: 'value2', label: 'Value 2'},
{value: 'value3', label: 'Value 3'},
{value: 'value4', label: 'Value 4'},
{value: 'value5', label: 'Value 5'}
];
var originalLength = array.length; // will equal 5
// Loop through and delete value3:
for (var i = 0; i < array.length; i++) {
if (array[i].value === 'value3') {
delete array[i];
}
}
// Reset the array length manually:
array.length = originalLength - 1;