2016-09-09 135 views
3

我在Ember路由中的queryParams默认值有问题。我的路由类的样子:Ember路由queryParams默认值

export default Ember.Route.extend({ 
    queryParams: { 
    pageNumber: { refreshModel: true }, 
    pageSize: { refreshModel: true } 
    }, 

    model(params) { 
    console.log(params); 

    return this.store.query('user', { 
     page: { 
     number: params.pageNumber, 
     size: params.pageSize 
     } 
    }); 
    } 
}); 

和控制器:

import Ember from 'ember'; 

export default Ember.Controller.extend({ 
    queryParams: { 
    pageNumber: 'page', 
    pageSize: 'limit' 
    }, 

    pageNumber: 1, 
    pageSize: 25 
}); 

但如果URL没有 '页' 和 '限价' 的查询参数,模型钩PARAMS有{PAGENUMBER:未定义,每页:未定义}。是否有任何方式来设置Route queryParams的默认值,就像控制器的queryParams一样?

+0

这是正确的,你做什么。你可以在这个旋律中看到所有的是https://ember-twiddle.com/db931cb415d8579c89448f19bfc6accf –

回答

5

您可以只设置你的路由器型号挂钩的默认值,那么你就需要把它们设置在你的控制器:

export default Ember.Route.extend({ 
    queryParams: { 
    pageNumber: { refreshModel: true }, 
    pageSize: { refreshModel: true } 
    }, 

    model(params) { 
    params.pageNumber = params.pageNumber || 1; 
    params.pageSize = params.pageSize || 25; 

    return this.store.query('user', { 
     page: { 
     number: params.pageNumber, 
     size: params.pageSize 
     } 
    }); 
    } 
}); 

export default Ember.Controller.extend({ 
    queryParams: { 
    pageNumber: 'page', 
    pageSize: 'limit' 
    } 
}); 
+0

E.g.没有任何优雅的方式将默认值与Route和Controller同步? –

+0

有没有很好的声明方式来做到这一点,我知道 –