Маршрутизация на новый URL после onSubmit на форме в MeteorJS - PullRequest
0 голосов
/ 22 апреля 2020

Мне нужно перейти на другой URL-адрес в приложении, сделав его частью: id из формы. По сути, как только кто-то вводит код в форму и отправляет его, мне нужно перейти на другой маршрут, включая этот код.

import { Template } from 'meteor/templating';
import { FlowRouter } from 'meteor/ostrio:flow-router-extra'

import './search.html';
import './restaurants.js';

Template.body.events({
  'submit .search-restaurant'(event) {
    // Prevent default browser form submit
    //event.preventDefault();

    // Get value from form element
    const target = event.target;
    const postCode = target.text.value;
    FlowRouter.go('/restaurants/{{postCode}}');
    //Meteor.setTimeout(function() {FlowRouter.go('restaurants.show'), { postCode: postCode }}, 100)
   //FlowRouter.go('restaurants.show');
    //target.text.value = '';
  },
});

И это форма:

<template name="search">
<p> Enter your postcode to see restaurants around you </p>
    <form class="search-restaurant">
      <input type="text" placeholder="4169" />
    </form>
</template>

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

В качестве дополнения к ответу Джанкапункта вы можете передать идентификатор в go в объекте опций:

FlowRouter.go('restaurants.show'), { id: postCode });

Я вижу, что вы пробовали это в этой строке:

//Meteor.setTimeout(function() {FlowRouter.go('restaurants.show'), { postCode: postCode }}, 100)

Но если ваш маршрут использует :id, вам нужно передать объект с ключом id.
Кроме того, вы пропускаете закрывающую скобку после : postcode } до закрытия функции, поэтому также может быть причина того, почему это не сработало

1 голос
/ 22 апреля 2020

Вы должны создать свой URL, используя литералы шаблона :

const postCode = target.text.value;
FlowRouter.go(`/restaurants/${postCode}`);

Это разрешит ввод с именем от foo до /restaurants/foo, поэтому :id будет "foo" то.

...