在路线图中添加查询字符串 URL

Add query string in route map URL

我正在使用 Ember 2.7。有没有办法在路由映射中指定查询参数URL

router.js

import Ember from 'ember';
import config from './config/environment';

const Router = Ember.Router.extend({
    location: config.locationType
});

Router.map(function() {
    this.route('index', {path: '/'});

    this.route('books', function() {
        this.route('index', {path: '?page=0&perPage=25'});
        this.route('view', {path: '/view/:bookIdid'});
        this.route('new');
 });

上面的代码正在生成以下 URL "localhost:4200/books/?page=0&perPage=25",我不确定为什么它在查询参数之前添加斜杠。

导航

<ul class="nav nav-pills">
<li class="nav-item">
  {{#link-to "products.index" class="nav-link vf-nav-types"}} Product Types{{/link-to}}
</li>
<li class="nav-item">
  {{#link-to "books.index" class="nav-link vf-nav-books"}} Books {{/link-to}}
</li>
<li class="nav-item">
  {{#link-to "apps.index" class="nav-link vf-nav-application"}} Application {{/link-to}}
</li>

如有任何帮助,我们将不胜感激。

据我所知,无法执行您的操作(至少达到 Ember 2.8),queryParams 在控制器中声明,如 documentation 中所述。

你必须像这样在控制器中声明它们:

import Ember from 'ember';

export default Ember.Controller.extend({
  queryParams: ['category'],
  category: null //or some other default value
});

在浏览您的应用程序时,您可以使用 link-to 帮助程序来设置查询参数,就像这样

{{#link-to "someroute" (query-params category="something")}}Go!{{/link-to}} 

下面的代码是错误的。

this.route('index', {path: '?page=0&perPage=25'});

你需要考虑 queryParams 所以在控制器中定义 pageperPagethis.route('index', {path: '/'}); 它会默认添加,您不需要将其包含在 router.js 中。 guide link

已创建 Sample Twiddle 用于演示。

import Ember from 'ember';

export default Ember.Controller.extend({
  queryParams: ['page','perPage'],
  page: 1, //1 is default value
  perPage:25,
});

this.route('view', {path: '/view/:bookIdid'}); 考虑实施动态细分。 guide link

最好遵循 ember 定义动态段的约定,而不是 bookIdid 将其替换为 :model-name_id