mercredi 27 mai 2015

How to set default values for query params based on dynamic segment?

I am creating universal grid for some entities. For that I added this in routes:

this.route('record', { path: '/record' },function() {
   this.route('index', {path: '/:entity'});
   this.route('view', {path: '/:entity/:record_id'});
});

and created new "index" route:

export default Ember.Route.extend({
  entity: '',

  queryParams: {
    sort: {
      refreshModel: true
    }
  },

  beforeModel: function(transition) {
    var entity = transition.params[this.get('routeName')].entity;

    this.set('entity', entity);
  },

  model: function(params) {
    delete params.entity;

    return this.store.findQuery(this.get('entity'), params);
  },
}

my controller

export default Ember.ArrayController.extend({
  queryParams: ['sort'],

  sort: ''
}

how can I set default value for the "sort" based on dynamic segment? For example in my settings I store sort values for all entites:

'settings.user.sort': 'email ASC',
'settings.company.sort': 'name ASC',

I tried to define "sort" as computed property, but its "get" method is called in time when I can't get a value of dynamic segment from currentHadlerInfo or from route.

Also defining of the property "sort" as computed property has strange effect, for example, when I define it as

sort: 'email ASC'

in my template it is displayed via {{sort}} as expected (email ASC). but when I return a value from computed property, I see empty value in my template and this affects on a work of components (I can't get current sorted column)

What can I do?..




Aucun commentaire:

Enregistrer un commentaire