我在流星的網站上工作。我剛開始使用控制器,但不知道如何獲得按鈕點擊的例子。流星得到鐵的事件:路由器控制器
我有以下temnplate:
<template name="login">
<form>
<input type="email" name="loginEmail">
<input type="password" name="loginPassword">
<input type="submit" class="login" value="Login">
</form>
</template>
而且我的控制器:
LoginController = RouteController.extend({
template: 'login',
'click .login': function(e, t) {
alert('submit button is clicked');
}
});
現在,當我點擊提交按鈕的頁面重新加載和所有數據直接傳送到URL。這根本不是我想要的。我想讓警報彈出。
我不知道從哪裏開始,我認爲這與我不瞭解我應該使用控制器的方式有關。使用控制器之前,這工作:
Template.login.events({
'submit form': function(event){
event.preventDefault();
var emailVar = event.target.loginEmail.value;
var passwordVar = event.target.loginPassword.value;
Meteor.loginWithPassword(emailVar, passwordVar);
console.log('loggin in');
}
});
那麼我怎麼能在我的控制器內實現相同的東西?或者我應該爲它做一個方法?
注:我用的鐵:路由器調用控制器:
Router.route('/login', {
name: 'login',
controller: 'LoginController'
});
不,還是重裝。你確定這是在控制器內部完成這個操作的正確位置嗎? –
沒有權利,沒有意識到,你將無法獲得我認爲在路由控制器中的模板事件,你仍然必須使用模板事件函數'Template.login.events'。並可能仍然'event.preventDefault();'我會更新我的回答 – Guillaume
感謝您的更新。仍然有問題。如果我想使用Template.login.event,我需要導入登錄模板和Template包。但我想我不想在RouterController內部執行此操作,因爲我不想在控制器內導入模板文件。那麼我應該爲處理事件製作一個單獨的客戶端文件嗎? –