javascript - AngularJS:组件树以及如何处理新创建实体的 ID(通过 HTTP)

标签 javascript angularjs http angularjs-directive

我正在使用 Angular 1。我有一个待办事项列表应用程序,其中有一个执行服务器端交互的智能(容器)组件,以及一个显示待办事项列表和要创建的文本字段的哑/纯/无状态演示组件一个新的。演示组件有一个 onCreate事件绑定(bind),因此父组件可以 POST Todo每当创建时就发送到服务器。

<todo-container>
<todo-list todos="vm.todos" on-create="vm.postTodoToServer($event)"> </todo-list>
</todo-container>

每个Todo<todo-list>演示组件也应该有一个 ID,以便可以执行 PUT/PATCH/DELETE 操作(我们将来将为 onUpdate 实现 onDelete<todo-list> 绑定(bind)。但是,对于新添加的 Todo ,我不会直到 Todo 被 POST 到服务器才知道该 ID。因此,当服务器最终响应时,<todo-container> 必须向 <todo-list> 提供新创建的 Todo 的 ID。

如何在不紧密耦合两个组件的情况下以优雅的方式处理这个用例?我可能想使用<todo-list>在应用程序其他位置的不同容器内(可能没有服务器端交互)。

最佳答案

当数据仅存在于客户端时,一种选择是使用实用程序库中的 UUID 生成器作为临时 ID。您还可以将 id 设为负数,以便您的服务器进程知道,当待办事项被发布时,它实际上并不存在于服务器上,因此需要为其分配一个真实的 id,以与服务器 ID 模式。然后只需使用 POST 调用返回的真实服务器分配数据覆盖待办事项列表项即可。

例如,Lodash(一个实用程序库)有一个独特的 id 生成器函数。

关于javascript - AngularJS:组件树以及如何处理新创建实体的 ID(通过 HTTP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41685733/

相关文章:

javascript - 添加 emoji=true 到 .flowconfig

javascript - IN.UI.Share() 成功回调不起作用

AngularJS $http 错误的 http 状态错误

javascript - 将指令与 JS 模板本身一起使用

C++ - 在连接关闭后发送 HTTP POST/GET

iphone - 使用 POST 参数通过 UIWebView 加载网页

javascript - Bootstrap Carousel 不换图不滑动

javascript - Angularjs ctrl 单元测试因依赖项失败

http - HTTP 包服务器在生产中使用安全吗?

javascript - 使用 converge 生成列表的所有旋转时出现意外结果