首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ember:在偏离路由时自动销毁未实现的新模型实例。

Ember:在偏离路由时自动销毁未实现的新模型实例。
EN

Stack Overflow用户
提问于 2018-05-31 20:57:19
回答 1查看 305关注 0票数 2

我有一个/posts/new路径来创建一个新的post记录。我正在使用成员-表格-供外接程序,它为创建表单提供了帮助。您应该向form-for组件传递一个对象,当您提交表单时,form-for将调用对象上的save()方法。看起来你应该直接传递给它一个模型的实例。

这意味着当我导航到这个路由时,我需要自动创建一个新的post模型实例。只要我提交表单并创建新的模型实例,这一切都很好。但是,如果我走到这条路线,然后不提交(即保存)新实例就离开了呢?这似乎会在商店里留下一个未保存的模型实例。如果我离开路由导航,是否需要手动销毁此实例,或者是否有更优雅的方法来实现此操作?如果我确实需要手动销毁它,那么合适的钩子是什么?deactivate是一个路由方法,但是我的新实例存储在控制器上。

注:我见过这个现有的答案,但它是2013年的。想知道现在有没有更干净的东西可用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-01 05:27:35

由于您正在创建一个新的模型,您需要手动销毁它(回滚)。这可以在路由的resetController钩子中完成。如下所示:

代码语言:javascript
复制
// Your route.js file
import Route from '@ember/routing/route';
import { get } from '@ember/object';

export default Ember.Route.extend({
  model() {
    return get(this, 'store').createRecord('some-model');
  },
  resetController(controller, isExiting) {
    if (isExiting) {
      get(controller, 'model').rollbackAttributes();
    }
  }
});

参考:https://emberjs.com/api/ember-data/3.1/classes/DS.Model/methods/rollbackAttributes?anchor=rollbackAttributes

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50632675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档