此AngularJS应用程序中的删除功能大部分(记录已删除并显示成功消息),但视图未更新。
我尝试添加$scope.$apply()
,但这只会给我$digest already in progress
错误。但是如果摘要正在进行中,那不应该更新视图吗?这不是消化的作用吗?
在视图:
中<button ng-click="deleteNote(note)">Delete</button>
在控制器:
中LessonNotes.controller("NotesCtrl", ["$scope", "$routeParams", "$location", "Note", "NoteType", "Alert",
function($scope, $routeParams, $location, Note, NoteType, Alert) {
$scope.notes = Note.query();
$scope.deleteNote = function(note) {
if(confirm("Are you sure you want to delete this note?")) {
note.$destroy(
function(n, responseHeaders) {
$scope.$apply();
Alert.add("success", "Note deleted successfully!", 5000);
},
function() {
Alert.add("warning", "There was an error deleting the note!", 5000);
}
);
}
};
}]);
服务:
LessonNotes.factory("Note", ["$resource", function($resource) {
return $resource("lesson_notes/notes/:id", { id: "@id" }, {
query: { method: 'GET', params: {}, isArray: true },
update: { method: 'PATCH' },
destroy: { method: 'DELETE' }
});
}]);
如果重要,我会在后端使用Rails。
答案 0 :(得分:1)
要防止出现$digest already in progress
错误,请尝试在Angular的$timeout
函数中运行代码。
另外,你没有使用$ scope。$正确应用,你想在你的代码周围包装$ apply调用。
$timeout(function() {
$scope.$apply(function() {
note.$destroy...
});
});