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 に答える