Ember Query Params

时间:2014-05-06 16:12:43

标签: javascript ember.js

在我的应用程序中,我想读取用户输入的参数,然后我想使用该参数。 http://responsive.beta.postify.com/X我想读取X值。但首先我如何确保路由器需要一个参数?

我的路由器就像这样

Cards.Router.map(function ()
{
    this.resource('cards', {path: '/'}, function ()
    {
      // additional child routes
      this.resource('selectImage');
      this.resource('message');
      this.resource('recipient');
      this.resource('orderStatus');
      this.resource('thankyou');
      this.resource('accountInfo');
      this.resource('recentOrders');
      this.resource('howTo');
      this.resource('faq');

   });

});

每当应用加载时我都想要该参数。这将是我的clientID,我将根据客户端从服务器获取数据。

有什么想法吗?

当我做这样的事情时

 Cards.Router.map(function ()
{
    this.resource('cards', {path: ':clientID'}, function ()
    {
      // additional child routes
      this.resource('selectImage');
      this.resource('message');
      this.resource('recipient');
      this.resource('orderStatus');
      this.resource('thankyou');
      this.resource('accountInfo');
      this.resource('recentOrders');
      this.resource('howTo');
      this.resource('faq');

   });

});

并且在我的浏览器中,如果我像这样http://responsive.beta.postify.com/#/26那么它的工作,但如果我喜欢http://responsive.beta.postify.com/26那么它就不起作用了。

1 个答案:

答案 0 :(得分:0)

要直接回答您的问题,要在路线中使用参数,您可以执行以下操作:

this.resource('cards', { path: '/:user_id' });

然后在你的路线

App.CardsRoute = Ember.Route.extend({
  model: function(params) {
    return this.store.find('post', params.user_id);
  }
});

这是您在特定路线中获取参数的方法。现在,就您的应用程序而言,使用上面发布的代码,只要他们在第一次加载时访问应用程序的根目录('/')并在网址中包含user_id,就可以获得该参数。

我建议采用不同的策略来获取client_id并将其存储在应用程序的后续用户中。例如,在我的应用程序中,我有一个Ember.Application.initializer({}),我存储了client_id。一切都取决于您的服务器配置以及您的应用程序的构建方式,但如果可以,我肯定会尝试以不同的方式获取client_id!

祝你好运。