How to execute code before model but not in beforeModel hook?

Hello,

I would like to execute some code juste before model hook execution in all my routes, but not in beforeModel hook because I need deserialized params. I tried this:

// app/initializers/justbeforemodel.js
import Route from '@ember/routing/route';

export default {
  initialize: function() {
     Route.reopen({
      model(params) {
        console.log('model code in initializer');
        this._super(...arguments);
      }
    })
  }
};

// app/routes/x.js
import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    console.log('model code in X route'); 
  }
});

But when I test, I have this logs :

  1. model code in X route
  2. model code in initializer

Code in initializer is always executed after code in routeā€¦ Thanks for your help,

Hi @Myrdhin, I would rather return promise from model and do the logic in that promise.

import Ember from 'ember';

export default Ember.Route.extend({
  model(params) {
    return RSVP.Promise((resolve, reject) => {
        console.log('model code in initializer', params);
    }).then(() => {
       console.log('model code in X route'); 
    });
  }
});

I was extracting model & beforeModel to mixins, it worked but it turn out to be problematic when hook in mixin suppose to return asyc code.