如何使用EmberData创建非持久模型?

时间:2015-01-21 20:59:08

标签: javascript ember.js ember-data

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

2 个答案:

答案 0 :(得分:1)

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

{{#each item in model}}
  {{#unless item.isNew}}
    {{item.name}}
  {{/unless}}
{{/each}}

根据Ember API docsDS.Store.createRecord方法:

  

在当前商店中创建新记录。

如果您不想检查是否记录isNew。您可以拥有一些用户输入属性,并且只有在您确定可以并且将会保留时才调用createRecord

答案 1 :(得分:1)

或者,一旦用户使用Model.isNewRoute.resetController离开路线,您就可以从商店中删除记录,而不是检查Store.unloadRecord

Route.resetController适用于模型更改或用户转换后您必须执行的所有控制器清理。恕我直言,这包括从商店中删除未保存的模型。

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

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

请参阅http://emberjs.com/api/classes/Ember.Route.html#method_resetControllerhttp://emberjs.com/api/data/classes/DS.Store.html#method_unloadRecord