带有查询参数的灰烬路线图URL

时间:2014-08-15 08:50:01

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

这是我的路线配置(使用ember-cli的route.js)

this.resource('xero-invoices', {path:'/loans/xero/:loan_id/invoices'})

但是在尝试路由此地址时,ember会切断查询字符串。如何解决问题?

2 个答案:

答案 0 :(得分:0)

你的路线定义部分有一个小错字错过了一个闭合的大括号,但我认为这不是真正的问题。为清楚起见,这里是固定的。

this.resource('xero-invoices', {path:'/loans/xero/:loan_id/invoices'})

上面的资源有一个动态段lone_id而不是查询字符串。查询字符串支持目前处于Ember的beta版本中,而不是稳定的。您尝试使用的任何查询字符串功能都将在您的控制器中处理。 http://emberjs.com/guides/routing/query-params/

如果你有一个jsbin或更多代码,我可能会更有帮助。

这是一个简单的jsbin,显示动态细分工作 - http://emberjs.jsbin.com/casana/1/edit

编辑: 在您的示例jsbin中,您尝试使用(query-parms)帮助link-to,仅当您使用的是Ember的beta版时才可以使用oauth_token帮助程序。在应用程序控制器中,如果从应用程序模板中删除它,则不会出现错误。在您的路由中,由于您将查询参数作为模型返回,因此可以通过控制器中的model属性访问App = Ember.Application.create(); App.Router.map(function() { this.resource('xero-invoices', { path:'/loans/xero/:loan_id/invoices' }); }); App.IndexRoute = Ember.Route.extend({ model: function() { return ["red","blue","green"]; } }); App.XeroInvoicesRoute = Ember.Route.extend({ model: function(params) { window.console.log(params); return params.queryParams["oauth_token"]; } });

来源:http://jsbin.com/bufukiqisika/8/edit

<script type="text/x-handlebars">
  <h2>Welcome to Ember.js</h2>

  {{outlet}}
</script>
<script type="text/x-handlebars" data-template-name="xero-invoices">
  {{model}}
</script>

模板:

{{1}}

示例:http://jsbin.com/bufukiqisika/8#/loans/xero/09870987/invoices?oauth_token=foo

答案 1 :(得分:0)

您可以使用在控制器上定义的查询参数。

这样的事情应该有效:

MyController = Ember.Controller.extend({
  queryParams: ['searchvalue'],
  searchvalue : null
})

在你的模板:

{{input type="text" valueBinding=controller.searchvalue}}

因此,您的搜索值将在网址中显示,例如“... / MyApp的/ SEACH?searchvalue = foo”的

请参阅http://emberjs.com/guides/routing/query-params/