新角度-如何从表中删除选定的值

New to Angular - How to Remove a selected value from a table

本文关键字:删除 新角度      更新时间:2024-05-17

我正在尝试使用这个jboss快速启动学习一些基本的AngularJS:https://github.com/jboss-developer/jboss-wfk-quickstarts/tree/c488a5b/kitchensink-angularjs-bootstrap

这是service.js文件:

angular.module('membersService', ['ngResource']).
    factory('Members', function($resource){
  return $resource('rest/members/:memberId', {});
});

很简单,对吧?下面是controllers.js文件的相关部分:

$scope.register = function() {
  Members.save($scope.newMember, function(data) {}, function(result) {});
};
$scope.setSelected = function (member) {
    $scope.selectedMember = member;
    $scope.successMessages = [ $scope.selectedMember.name ];
}
$scope.unregister = function() {
    $scope.successMessages = [ 'Selected: ' + $scope.selectedMember.name ];
    Members.remove($scope.selectedMember, function(data) {}, function(result) {});
};

"successMessages"确认正在捕获我选择的值。以下是MemberResourceRESTService.java类中的relavent POST/DELETE方法:

    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
    public Response createMember(Member member) {
        Response.ResponseBuilder builder = null;
        try {
            registration.register(member);
            builder = Response.ok();
        }  catch (Exception e) {}
        return builder.build();
    }
    @DELETE
    @Produces(MediaType.APPLICATION_JSON)
    public Response removeMember(Member member) {
        Response.ResponseBuilder builder = null;
        try {
            registration.unregister(member);
            builder = Response.ok();
        } catch (Exception e) {}
        return builder.build();
    }

基本上,POST/Create Member部分正在工作,但DELETE/Remove Member Rest方法正在传递一个NULL Member。我不确定为什么它没有从客户端进行转换,以及我需要检查哪些额外的文件/config。如果这是一个新手问题,我深表歉意。

在Hoyen评论的帮助下,我能够进行两次修改,修复了问题:

1) 在controllers.js文件中,我不得不修改$scope.unregister函数,使其看起来像这样:

$scope.unregister = function() {
        Members.remove({ memberId : $scope.selectedMemberId });
    }

2) 我不得不修改我的RestService以包含Id PathParam:

@Path("/{memberId}")
@DELETE
public Response removeMember(@PathParam("memberId") long memberId) {
Response.ResponseBuilder builder = null;
try {
                registration.unregister(memberId);
                builder = Response.ok();
            } catch (Exception e) {}
            return builder.build();
}