Angular 的新手 - 如何从 table 中删除选定的值

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

我正在尝试使用此 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 class 中的相关 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。我不确定为什么它没有从客户端传过来,以及我需要检查的额外内容 file/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();
}