Ember.js 带有搜索查询原因的路由:UnrecognizedURLError
Ember.js Route with searchquery causes: UnrecognizedURLError
在我的应用程序中,我有一个带有动态输入字段的搜索公式。然后该表格导致以下 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
使用查询参数而不是动态段,因此对 URL 架构具有特殊意义的字符将被转义,您的应用程序路由甚至在刷新时也能正常工作。
URL 变为:http://app.com#/trefferliste?query=%3FmodulId%3D1%26modus%3Ddokument%26identnummer%3DXXX
,但您必须遵守 Ember.js 和全球 URL 约定。
代码:
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 } });
}
}
});
在我的应用程序中,我有一个带有动态输入字段的搜索公式。然后该表格导致以下 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
使用查询参数而不是动态段,因此对 URL 架构具有特殊意义的字符将被转义,您的应用程序路由甚至在刷新时也能正常工作。
URL 变为:http://app.com#/trefferliste?query=%3FmodulId%3D1%26modus%3Ddokument%26identnummer%3DXXX
,但您必须遵守 Ember.js 和全球 URL 约定。
代码:
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 } });
}
}
});