Железо: роутер работает странно - отправляет меня в шаблон, потом возвращается

У меня проблема с функцией Router.go(). У меня есть форма, и когда она будет отправлена, предполагается, что я направлю меня на страницу викторины. В настоящее время он делает это, за исключением того, что немедленно возвращает меня к домашнему шаблону, где была форма. Я отнял у Метеора пару месяцев, чтобы не сомневаться, что у меня пердит мозг. Любая помощь будет принята с благодарностью, спасибо.

Все, что находится на странице викторины, - это шаблон с названием викторины и тегом h1 внутри, указывающим на страницу викторины. Я могу увидеть эту страницу за секунду до того, как она вернется на домашнюю страницу.

Вот файл JS моей домашней страницы:

if (Meteor.isClient) {

   Template.home.events({
       "click .btn-success": function(event){
           var lead_name = $('#name').val();
           var lead_email = $('#email').val();
           leads.insert({name: lead_name, email: lead_email});
           Router.go('quiz');
       }
   });

    Template.home.helpers({
       leads: function(){
           return leads.find();
       }
    });
}

Ниже приведен файл home.html:

<template name="home">
<div id="home" class="container-fluid">
    <div class="row col-md-4 col-md-offset-4">
        <h1>Omni Homogenizer Quiz</h1>
        <h2>How Well Do You Know Homogenizing?</h2>
        <form>
            <div class="form-group">
                <label for="name">Your Name:</label>
                <input type="text" name="name" placeholder="name" class="form-control" id="name">
            </div>
            <div class="form-group">
                <label for="email">Your Email:</label>
                <input type="text" name="email" placeholder="email" class="form-control" id="email">
            </div>
            <button class="btn btn-large btn-success">Play Now to Enter To Win an IPad Mini</button>
        </form>
    </div>
</div>

Вот мой файл router.js:

Router.configure({
    layoutTemplate: 'layout'
 });

Router.map(function() {

   this.route('home', {
      path: '/',
      template: 'home',
   });

   this.route('quiz');

});

1 ответ

Решение

Попробуйте добавить event.preventDefault в ваш клик. Нажатие кнопки вызывает отправку формы.

Template.home.events({
    "click .btn-success": function(event){
        event.preventDefault();
        var lead_name = $('#name').val();
        var lead_email = $('#email').val();
        leads.insert({name: lead_name, email: lead_email});
        Router.go('quiz');
    }
});
Другие вопросы по тегам