ember.js - 查找使用“createRecord”创建且 ID 值为空的 Ember-Data 行?
问题描述
我在 Ember 3.8 项目中使用以下模式...
情况
当用户导航到路线时,路线定义中foo/add
的函数用于在数据存储中生成空记录。model
createRecord
foo
foo/add 模板使用一个Component
实现表单来输入foo
详细信息的模板。反过来,表单使用 ember-power-select 的实例,在表单中定义了 onchange 处理程序。foo
Component
一旦显示表格,用户就可以自由使用电源选择。
当onchange
电源选择的处理程序触发时,我想更新最初由createRecord
.
问题
我可以向 foo/add 发送一个操作,Controller
但是如何Controller
在 Data Store 中找到该行?因为该行还没有被插入到服务器上,所以它没有最终将与之关联的 ID,所以 id 值实际上是 null。
备择方案
我已经阅读了旧 Ember 材料中的一些参考资料,以便能够生成您自己的 ID,createRecord
但我找不到当代参考资料。
我对完全不同的方法持开放态度,因此欢迎提出任何建议。
最后,虽然我使用数据存储在客户端保存数据,但我实际上并没有使用 Ember-Data 与服务器通信(不确定这有什么区别,但我想我会说清楚)。
解决方案
您可以在路由的模型挂钩中返回新创建的记录(听起来您已经这样做了),然后在控制器中通过this.get('model')
. 如果您打算保留它并让您的服务器生成记录 ID,您可以执行类似的操作api.post(record).then(response => store.pushRecord(response))
,那么您将能够通过它的新服务器生成的 ID 找到它。store.peekRecord(response.id)
推荐阅读
- asp.net - Couldn't install Microsoft.VisualStudio.AspNet45.Feature
- javascript - 生成 HTML 到 PDF,并使用 Laravel 将生成的 PDF 上传到数据库?
- export - Kivy:任意比例的 export_to_png()
- scala - 如何使用 FS2 中的分类器功能对对象进行分组?
- php - PHP - 获取ajax获取的变量
- php - 如何使用正则表达式仅获取操作数
- ruby-on-rails - 无法将 rails 应用程序推送到 Heroku turbolinks
- java - 如何将某个字符串放入 *if* 并检查它是否是某个单词
- javascript - 如何组合两个返回 Rx Observables 的相似 http 请求?
- node.js - 如何允许电报机器人检查命令的可选参数