将控制器 属性 暴露给路由的模型函数
Expose controller property to route's model function
我已经在控制器中为分页定义了一些属性:
import Ember from 'ember';
export default Ember.ArrayController.extend({
limit: 1,
skip: 0,
pageSize: 1
}
});
我想在路由的 model
函数中访问 limit
,但我不知道如何访问。
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
console.log(this.get('controller').get('limit')) <- doesnt work for example
return this.store.find('post', {limit: 1,
sort:'createdAt desc'});
}
});
也许您应该看一下 queryParams 选项 (http://emberjs.com/guides/routing/query-params/)。
使用查询参数,您可以将限制设置为 URL 中的查询参数,例如 http://yourdomain.com/someroute?limit=15
。
您的控制器将变为:
export default Ember.ArrayController.extend({
queryParams: ['limit'], // Here you define your query params
limit: 1 // The default value to use for the query param
});
您的路线将变为:
export default Ember.Route.extend({
model: function(params) {
return this.store.find('post', {
limit: params.limit, // 'limit' param is available in params
sort:'createdAt desc'
});
}
});
选择:
如果您不想使用查询参数,另一种解决方案可能是在其中一个父路由的控制器中定义限制 属性。通过这样做,您可以通过以下方式访问模型挂钩中的 属性:
this.controllerFor('parentRoute').get('limit');
我已经在控制器中为分页定义了一些属性:
import Ember from 'ember';
export default Ember.ArrayController.extend({
limit: 1,
skip: 0,
pageSize: 1
}
});
我想在路由的 model
函数中访问 limit
,但我不知道如何访问。
import Ember from 'ember';
export default Ember.Route.extend({
model: function(params) {
console.log(this.get('controller').get('limit')) <- doesnt work for example
return this.store.find('post', {limit: 1,
sort:'createdAt desc'});
}
});
也许您应该看一下 queryParams 选项 (http://emberjs.com/guides/routing/query-params/)。
使用查询参数,您可以将限制设置为 URL 中的查询参数,例如 http://yourdomain.com/someroute?limit=15
。
您的控制器将变为:
export default Ember.ArrayController.extend({
queryParams: ['limit'], // Here you define your query params
limit: 1 // The default value to use for the query param
});
您的路线将变为:
export default Ember.Route.extend({
model: function(params) {
return this.store.find('post', {
limit: params.limit, // 'limit' param is available in params
sort:'createdAt desc'
});
}
});
选择:
如果您不想使用查询参数,另一种解决方案可能是在其中一个父路由的控制器中定义限制 属性。通过这样做,您可以通过以下方式访问模型挂钩中的 属性:
this.controllerFor('parentRoute').get('limit');