将控制器属性暴露给路由模型功能

时间:2015-02-08 09:38:03

标签: ember.js ember-data ember-cli

我在控制器中为分页定义了一些属性:

import Ember from 'ember';

export default Ember.ArrayController.extend({
  limit: 1,
  skip: 0,
  pageSize: 1
  }
});

我想在路线的limit - 功能中访问model,但我不知道如何。

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'});
   }
});

1 个答案:

答案 0 :(得分:1)

也许您应该查看queryParams选项(http://emberjs.com/guides/routing/query-params/)。

使用查询参数,您可以将限制设置为您的网址中的查询参数,例如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'
        });
    }
});

<强>替代:

如果您不想使用查询参数,则另一种解决方案可能是在父路由的控制器之一中定义limit属性。通过执行此操作,您可以通过执行以下操作来访问模型挂钩中的属性:

this.controllerFor('parentRoute').get('limit');