我是AngularJS的新手,我的问题是,当我使用资源保存任务时,它会将信息正确地发送到数据库。收到POST时服务器响应创建的任务ID。
我有类似的东西
$scope.save = function(){
var retorno = Task.save($scope.task);
console.log("Retorno = "+retorno);
$scope.tasks.push($scope.task);
}
控制台中的retorno值是Retorno = [object Object]
id来自这里
def newTask = SecuredAction { implicit request =>
println("TaskController.newTask")
taskForm.bindFromRequest.fold(
errors =>
BadRequest(views.html.tasks(request.user, Task.all(request.user.id.id), errors, errors)),
_publicTask => {
val id = Task.create(_publicTask.label,request.user.id.id, _publicTask.date)
//Redirect(routes.TaskController.tasks())
id match{
case Some(_id) => Ok(_id.toString).as("application/json")
case None => Ok("error")
case _ => Ok("ERROR")
}
}
)
}
返回类似这样的内容
516e750ee4b0230023ba5acc
那么,如何在控制器中处理此返回。 顺便说一句,我想要这样,因为当我推送任务时,它没有ID,因此无法在不刷新页面的情况下删除。
答案 0 :(得分:0)
重要的是要意识到调用$ resource对象方法会立即返回一个空引用(对象或数组,具体取决于isArray)。从服务器返回数据后,将使用实际数据填充现有引用。
所以而不是
var retorno = Task.save($scope.task);
$scope.tasks.push($scope.task);
你应该采用回调方式
var retorno = Task.save($scope.task, function() {
// here retorno should already have ID in it
// and you may want to set it to a task
$scope.tasks.push($scope.task);
});