Javascript 如何使用数据创建非持久化模型?

Javascript 如何使用数据创建非持久化模型?,javascript,ember.js,ember-data,Javascript,Ember.js,Ember Data,我有一个余烬数据应用程序,我正在使用createRecord在新的记录页面上实例化一个模型。问题是,这会立即在存储中创建记录。因此,如果有人离开新记录页,该对象已经被持久化。以前有一个createModel方法,但它似乎已被删除。现在是如何处理的?您可以检查Model.isNew是否已保存。例如,当您从model/addroute向后导航时,可以在Handlebar中执行以下操作,以显示数据库中的记录列表并隐藏新的非持久化模型: {{#each item in model}} {{#unle

我有一个余烬数据应用程序,我正在使用
createRecord
在新的记录页面上实例化一个模型。问题是,这会立即在存储中创建记录。因此,如果有人离开新记录页,该对象已经被持久化。以前有一个
createModel
方法,但它似乎已被删除。现在是如何处理的?

您可以检查
Model.isNew
是否已保存。例如,当您从
model/add
route向后导航时,可以在Handlebar中执行以下操作,以显示数据库中的记录列表并隐藏新的非持久化模型:

{{#each item in model}}
  {{#unless item.isNew}}
    {{item.name}}
  {{/unless}}
{{/each}}
根据,
DS.Store.createRecord
方法:

在当前存储中创建新记录


如果不想检查记录
是否为新记录
。您可以为用户输入和调用
createRecord
设置一些属性,前提是您确定这些属性可以并且将被持久化

或者,您可以使用
route.resetController
store.unloadRecord
在用户离开路由后从存储中删除记录,而不是检查
Model.isNew

Route.resetController
用于在模型更改或用户离开后必须进行的所有控制器清理。IMHO这包括从存储中删除未保存的模型

PostsNewRoute = Ember.Route.extend
  model: (params) ->
    @store.createRecord 'post'

  resetController: (controller, isExiting, transition) ->
    @store.unloadRecord controller.get('model') if isExiting

请参见和

嗯。。。所以答案基本上是我们需要一个强制过滤器?我在我的应用程序中使用这种方法,我没有找到更好的解决方案。这不是一个坏建议,我很感激。我希望有人提出正确的“余烬”方式,但如果没有,我会接受你的。如果有人提出更好的解决方案,我也会使用它。