0

我是 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,如果不刷新页面就无法删除。

4

1 回答 1

0

$resource 上的 Angular 文档指出

重要的是要意识到调用 $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); 
});
于 2013-04-17T11:07:05.570 回答