Как использовать параметры URL с помощью Meteorjs


person kstieger    schedule 01.03.2014    source источник
comment
Вы случайно не пользуетесь железным роутером?   -  person David Weldon    schedule 02.03.2014


Ответы (1)


Вы, вероятно, захотите использовать маршрутизатор, чтобы заботиться о путях и отображать определенные шаблоны для разных путей. Для этого лучше всего подходит пакет iron-router. Если вы еще не используете его, я очень рекомендую его.

После того, как вы используете iron-router, получение строк запроса и параметров URL становится очень простым. Вы можете увидеть раздел документации здесь: https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#route-parameters

Для примера, который вы привели, маршрут будет выглядеть примерно так:

Router.map(function () {
  this.route('home', {
    path: '/',
    template: 'task_app'
    data: function () {
      // the data function is an example where this.params is available

      // we can access params using this.params
      // see the below paths that would match this route
      var params = this.params;

      // we can access query string params using this.params.query
      var queryStringParams = this.params.query;

      // query params are added to the 'query' object on this.params.
      // given a browser path of: '/?task_name=abcd1234
      // this.params.query.task_name => 'abcd1234'
      return Tasks.findOne({task_name: this.params.query.task_name});

    }
  });
});

Это создаст маршрут, который будет отображать шаблон «task_app» с контекстом данных первой задачи, который соответствует имени задачи.

Вы также можете получить доступ к параметрам URL-адреса и другой информации о маршруте из помощников шаблона или других функций, используя Router.current() для получения текущего маршрута. Так, например, в помощнике вы можете использовать Router.current().params.query.task_name для получения имени текущей задачи. Router.current() является реактивным элементом, поэтому, если он используется в реактивном вычислении, вычисление будет перезапущено при внесении любых изменений в маршрут.

person Dsyko    schedule 02.03.2014
comment
Теперь, как получить доступ к этому параметру внутри события загрузки шаблона в вашем примере. база в вашем примере, как получить доступ к this.params.taskname в Template.home.events({}) - person JCm; 18.04.2015
comment
Этот ответ только говорит нам, как получить доступ к параметрам запроса в файле router.js. Он не объясняет, как получить доступ к параметрам запроса в функции шаблона, как указано в исходном примере. - person JoeTidee; 05.05.2015
comment
Вы можете использовать Router.current().params в любом месте Meteor, если вы используете Iron Router. Это реактивная переменная, поэтому имейте в виду, что если вы используете ее в реактивном вычислении, функция будет перезапускаться при каждом изменении параметров. - person Dsyko; 08.05.2015