AngularJS ngResource删除不调用回调的事件
我有这个代码:
dogsResource.delete({id: $stateParams.dogId},angular.noop,function(value,responseHeaders){ //Success console.log(value); console.log(responseHeaders); },function(httpResponse){ //Error console.log(httpResponse); } ); 删除完成后,问题是既没有成功也没有错误被调用.我也尝试过使用一个实例(这意味着使用$delete),但它也没有用. 我尝试用其他方法测试回调,比如get $scope.dog = dogsResource.get({id: $stateParams.dogId},res){ console.log(value); }); 它有效.我不知道为什么会这样,因为狗正在从数据库中删除. 谢谢 UPDATE dogResource代码 // Return the dogs resource .factory('dogsResource',['$resource',function($resource){ return $resource("http://localhost:5000/dogs/:id",{id: "@id"},{update: {method: "PUT"}}); }]) 更新2 我发现了错误.它在RESTful API(Node js)中.该方法没有向Angular发送任何内容,因此没有触发回调: //DELETE - Delete a dog with specified ID exports.deleteDog = function(req,res) { console.log('DELETE' + req.params.id); Dog.findById(req.params.id,function(err,dog) { dog.remove(function(err) { if(err) return res.status(500).send(err.message); console.log('Succesfully deleted.'); res.status(200); }) }); }; 用res.status(200).end()替换res.status(200)会触发回调. 谢谢大家的时间.
我建议你不要用
实际上通常在expressJS中删除带有REST服务的对象时,常见的情况是将已删除的对象作为响应发送,因为它可能对前端获取此对象很有用(并确保它是好对象) . 所以不要使用
使用
或者,如果要发送空响应,则删除操作的状态代码应为:
请注意,默认情况下您不需要设置状态代码,它将为200.因此将状态代码设置为200只是无用的. 并且要完成http响应需要发送以关闭请求. end方法或send方法就是这样.将状态代码设置为响应http将永远不会向前端发送任何内容.这就是你的角度回调永远不会被解雇的原因. 因此,我建议您将标签expressjs添加到您的问题中,因为它不是AngularJS问题,而是真正的expressJS错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |