2016-02-25 95 views
3

我有我提交(和使用reactiveVar改變在提交視圖中的輸出)的形式。每當我成功提交我得到這個不祥的錯誤:未捕獲的RangeError:最大調用堆棧大小超過Meteor.js形式

Uncaught RangeError: Maximum call stack size exceeded 
isArguments @ es5-shim.js:888 
keys @ es5-shim.js:951 
_.each._.forEach @ underscore.js:111 
EJSON.clone @ ejson.js:500 
(anonymous function) @ ejson.js:501 
_.each._.forEach @ underscore.js:113 
EJSON.clone @ ejson.js:500 
(anonymous function) @ ejson.js:501 
_.each._.forEach @ underscore.js:113 
EJSON.clone @ ejson.js:500 

我在someview.js兩個事件處理程序:

Template.inquiry.events({ 
    'click .submit': function(event, template) { 
    var $form = template.$('#request-form'); 

    if ($form.valid()) { 
      template.showForm.set(false); 

      Meteor.setTimeout(function() { 
      template.showForm.set(true); 
      }, 10000); // Reset after 10 seconds. 
    } 
    }, 
}); 

Template.inquiry.events({ 
    'submit form': function(event) { 
     event.preventDefault(); 
     var name = event.target.name.value; 
     var email = event.target.email.value; 

     UserList.insert({ 
      name: name, 
      email: email 
     }); 
    } 
}); 

和幫手搶初始reactiveVar(showForm):

Template.inquiry.helpers({ 

    //toggles 'thank you' on inquiry template 
    showForm: function() { 
    return Template.instance().showForm.get(); 
    }, 
}); 

爲什麼我得到這個錯誤?

回答

1

你不應該把2個事件觸發在同一時間。點擊按鈕的同時,表單也會被提交(我相信timeout正在提交和點擊之間進行遞歸調用),因此會給您帶來意想不到的錯誤。您需要將這2個合併(這是自然的)

Template.inquiry.events({ 
    'submit form': function(event, template) { 

    event.preventDefault(); 
    var $form = template.$('#request-form'); 

    if ($form.valid()) { 
     var name = event.target.name.value; 
     var email = event.target.email.value; 

     UserList.insert({ 
      name: name, 
      email: email 
     }); 

     template.showForm.set(false); 

     Meteor.setTimeout(function() { 
      template.showForm.set(true); 
     }, 10000); // Reset after 10 seconds. 
    } 
} 

});

並刪除click事件

+0

謝謝。順便說一句,在client/views/thisview.js中有這個可以嗎?或者我應該在別處移動這樣的邏輯(只是最佳實踐) – user1072337

+0

我通常把與模板所有的事情到1個文件更容易控制 –

+0

你記在同一個文件夾視圖/模板本身的js文件? – user1072337

相關問題