Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Angular的新增功能-如何从表中删除选定值_Javascript_Angularjs_Rest_Jboss - Fatal编程技术网

Javascript Angular的新增功能-如何从表中删除选定值

Javascript Angular的新增功能-如何从表中删除选定值,javascript,angularjs,rest,jboss,Javascript,Angularjs,Rest,Jboss,我正在尝试使用jboss快速入门学习一些基本的AngularJS: 下面是service.js文件: angular.module('membersService', ['ngResource']). factory('Members', function($resource){ return $resource('rest/members/:memberId', {}); }); 很简单,对吧?下面是controllers.js文件的相关部分: $scope.register =

我正在尝试使用jboss快速入门学习一些基本的AngularJS:

下面是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) {});
};
“成功消息”正在确认我选择的值已被捕获。以下是MemberResourceRESTService.java类中的相关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成员块正在工作,但DELETE/Remove成员Rest方法正在传入一个空成员。我不确定为什么它不能从客户端完成,以及我需要检查哪些额外的文件/配置。如果这是一个新手问题,我深表歉意。

在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();
}

使用浏览器的调试器并检查删除URL的api调用是否正确。该成员未执行删除URL api调用。我不确定为什么它没有进入删除URL,但它似乎进入了上面的帖子URL。$scope.selectedMember是否有“id”?因为真正需要删除成员的只是对象的id。基本上检查它是否存在:$scope.selectedMember.id,或者在您的情况下,它可能是$scope.selectedMember.memberIdIt,它确实有一个id,我已经试着传递了这个id。问题是,无论我向“Members.remove()”方法传递什么,它都不会到达服务器。我甚至尝试过硬编码一个id I(例如Members.remove(0)),而DELETE-Rest方法传入了一个null。您的实现是错误的。它应该是这样的:Members.remove({memberId:1});因此,请确保$scope.selectedMember将mermberId作为属性。否则,将“rest/members/:memberId”更改为“rest/members/:id”