[英]sending actions from within a component in Ember
我試圖弄清楚如何在一個地方處理“登錄”操作,該操作必須通過單擊按鈕和“輸入”按鍵來激活。
在我的模板中,我將所有內容包裝在“登錄功能”組件中
//template home.hbs
{{#login-functions}}
<input id="email" type="email" class="validate">
<input id="password" type="password" class="validate">
<div id="login" {{action "login"}}>
{{/login-functions}}
//component components/login-functions.js
export default Ember.Component.extend({
actions: {
login: function() {
var email = $('#email').val();
var password = $('#password').val();
var self = this;
Utils.login(email, password).done(function(res) {
localStorage.setItem('Access-Token', res.data.token);
localStorage.setItem('userId', res.data.user_id);
self.transitionToRoute('feed');
})
.error(function(error) {
//handle error
});
}
},
keyPress: function(event) {
if (event.charCode === 13) {
console.log('login attempt');
this.send('login');
}
}
});
但這是行不通的,因為操作沒有從模板按鈕發送到組件的操作,也因為我無法從組件執行轉換。
有人可以告訴最好的方法來解決這個問題嗎?
我認為這是因為您的按鈕是home
模板的一部分。 也許應該將表單移至login-functions
模板中,並通過執行{{login-functions}}
從home
模板中調用該表單。
對於重定向,組件無法執行重定向,我建議使用this.sendAction('didLogin')
調用操作並在HomeController
處理重定向。
將keyPress
功能移出動作。
更新---這是一個有效的演示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.