在POST请求响应后,如何最好地设置集合中客户端创建的对象的ID

时间:2016-11-27 12:29:55

标签: javascript angular

我正在开发一个相对简单的任务应用程序,我无法弄清楚在一个Task对象中设置ID(以及任何可能的其他服务器创建内容)的最佳方法返回POST请求。例如;

if ($page.id === 'menuManager') {

[... CONDITIONAL CODE HERE...]

}

目前我已将新任务推送到// POST Data { title: 'The title for the task', due: '2016-01-01' } // Response { id: 123, title: 'The title for the task', due: '2016-01-01' } 函数中发生的集合中,但这意味着任务不会立即添加到列表(以及页面)中。允许将任务对象立即推送到集合中,然后是API更新响应或替换该对象的最佳方法是什么?

我考虑过编辑集合中的最后一个任务,但显然可以在返回第一个任务之前添加第二个任务。

以下代码显示了当前实现,其中列表组件和子表单组件在响应时发出事件。

subscribe

谢谢!

1 个答案:

答案 0 :(得分:0)

不知道这是否是最好的方法,但由于任务对象通过引用传递到addTask方法,我只是立即发出事件,以便任务出现在UI中,然后我在API响应时设置任务对象的ID;

addTask(task) {
    // Emit immediately
    this.taskAdd.emit(task);

    this.taskService.create(task)
      .subscribe(savedTask => {
        // Update the task that is now visible in the UI by reference
        task.id = savedTask.id;
      });

    // Full reassignment to prevent further by-reference side effects 
    this.task = {};
  }