How to manage newly created objects without “saving” before transitioning to a new route it in emberjs?

我们两清 提交于 2019-12-06 15:08:12

问题


I have an issue where I have a resource with a new route. When I transition to that new route I create a new object. On the form I have button to cancel, which removes that object. However, if I click a link on my navigation, say going back to the resource index, that object is there with whatever I put in the form. What's the best way of managing creating objects then moving away from the form?

My routes:

App.Router.map(function() {
  this.resource('recipes', function() {
    this.route('new');
    this.route('show', { path: '/:recipe_id' });
  });

  this.resource('styles');
});

App.RecipesNewRoute = Ember.Route.extend({
  model: function() {
    return App.Recipe.createRecord({
      title: '',
      description: '',
      instructions: ''
    });
  },

  setupController: function(controller, model) {
    controller.set('styles', App.Style.find());
    controller.set('content', model);
  }
});

My controller for the new route:

App.RecipesNewController = Ember.ObjectController.extend({
  create: function() {
    this.content.validate()
    if(this.content.get('isValid')) {
      this.transitionToRoute('recipes.show', this.content);
    }
  },

  cancel: function() {
    this.content.deleteRecord();
    this.transitionToRoute('recipes.index');
  },

  buttonTitle: 'Add Recipe'
});

I'm using version 1.0.0.rc.1

Thanks!


回答1:


Any code that you place in the deactivate method of your route will get executed every time you leave that route. The following code will delete the new model if the user hasn't explicitly saved it.

App.RecipesNewRoute = Ember.Route.extend({
    // ...

    deactivate: function() {
        var controller = this.controllerFor('recipes.new');
        var content = controller.get('content');
        if (content && content.get('isNew') && !content.get('isSaving'))
            content.deleteRecord();
    },

    // ...
});

As an added bonus, you now don't need to explicitly delete the record when the user presses the cancel button.



来源:https://stackoverflow.com/questions/15603661/how-to-manage-newly-created-objects-without-saving-before-transitioning-to-a-n

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!