我有一个余烬数据应用程序,我使用createRecord
在新记录页面上实例化模型。问题是,这会立即在商店中创建记录。因此,如果某人导航离开新记录页面,则该对象已被持久化。曾经有一个createModel
方法,但它似乎已被删除。现在如何处理?
答案 0 :(得分:1)
您可以查看Model.isNew
是否可以查看是否已保留。例如,您可以在Handlebars中执行以下操作以显示数据库中的记录列表,并在您例如从model/add
路径向后导航时隐藏新的非持久模型:
{{#each item in model}}
{{#unless item.isNew}}
{{item.name}}
{{/unless}}
{{/each}}
根据Ember API docs,DS.Store.createRecord
方法:
在当前商店中创建新记录。
如果您不想检查是否记录isNew
。您可以拥有一些用户输入属性,并且只有在您确定可以并且将会保留时才调用createRecord
。
答案 1 :(得分:1)
或者,一旦用户使用Model.isNew
和Route.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_resetController和http://emberjs.com/api/data/classes/DS.Store.html#method_unloadRecord