当我点击“删除”按钮时,会出现确认对话框。如果响应为是,我想删除评论(重定向到deleteReview
)并刷新页面,如果答案是否,我想取消对话框。但我不确定如何正确地重定向。
点击删除按钮后出现此方法:
$scope.showConfirm = function(ev,index) {
// Appending dialog to document.body to cover sidenav in docs app
var confirm = $mdDialog.confirm()
.title('Would you like to delete your review?')
.textContent('Your review will be deleted.')
.targetEvent(ev)
.ok('Yes')
.cancel('No');debugger;
$mdDialog.show(confirm).then(function() {
//IF YES redirect to deleteReview and refresh page
}, function() {
//IF NO cancel
});
};
这是我的deleteReview功能:
$scope.redirectDelete = function(index){debugger;
$scope.all[index].id; console.log($scope.all[index].id);debugger;
var JSONObject={
"id":$scope.all[index].id
}
var Results = UniversalService.DeleteReview(JSON.stringify(JSONObject));debugger
};
这是html按钮:
<md-button class="md-warn md-raised" ng-click="showConfirm($event,$index)" > Delete </md-button>
答案 0 :(得分:1)
从promise回调中调用$scope.redirectDelete(index);
,同时在$scope.all.splice(index,1);
方法中添加redirectDelete
,将其从客户端阵列中删除。
理想情况下,只有在服务器端成功删除后,才能将值从客户端的数组中拼接出来。这通常通过在解析服务器承诺时调用splice
代码来完成,但我不确定您的UniversalService.DeleteReview
方法返回什么。如果它是一个承诺,那么它看起来像这样:
UniversalService.DeleteReview(JSON.stringify(JSONObject)).then(function(results)
$scope.all.splice(index,1);
});
AngularJS会看到数组已被修改并自动刷新视图。无需手动刷新页面。