Ember.js使用searchquery路由导致:UnrecognizedURLError

时间:2015-09-10 07:52:23

标签: ember.js routes ember-query-params

在我的应用程序中,我有一个带有动态输入字段的searchformula。然后表单引导到以下URL:

/trefferliste/?modulId=1&modus=dokument&identnummer=XXX

我的路线定义:

this.resource('trefferliste', { 'path' : 'trefferliste/:query' });

直到这一点起作用,但当我刷新页面时,它说: UnrecognizedURLError

在trefferliste路由中,我使用以下语句加载数据:

return this.store.find('trefferliste', params.query);

我想通了,那个“?”导致问题,但我需要它为我的商店查找查询。那么,有人能告诉我如何定义我的路线吗?

更新:这是一个jsbin:http://emberjs.jsbin.com/nesehuxugi

重现错误的步骤:

按下按钮>然后刷新页面并查看控制台!

一些额外的信息:

DEBUG: Ember      : 1.12.1
ember-template-compiler.js:163 DEBUG: Ember Data : 1.0.0-beta.17
ember-template-compiler.js:163 DEBUG: jQuery     : 1.11.2

1 个答案:

答案 0 :(得分:1)

使用查询参数而不是动态细分,因此对URL模式具有特殊含义的字符将进行转义,即使在刷新时您的应用程序路由也能正常工作。

网址变为:http://app.com#/trefferliste?query=%3FmodulId%3D1%26modus%3Ddokument%26identnummer%3DXXX,但您必须尊重Ember.js和全局网址约定。

Working demo.

代码:

App = Ember.Application.create();

App.Router.map(function() {
  this.resource('trefferliste');
});

App.IndexRoute = Ember.Route.extend({
  model: function() {
    return ['red', 'yellow', 'blue'];
  }
});

App.TrefferlisteController = Ember.Controller.extend({
  queryParams: ['query'],
  query: null
});

App.IndexController = Ember.ObjectController.extend({ 
  actions: {
    suche: function() {
      var query = "?modulId=1&modus=dokument&identnummer=XXX";
      this.transitionTo('trefferliste', { queryParams: { query: query } });
    }
  }
});