[英]Alloy MVC Framework Titanium Network (Model)
我正在嘗試使用Alloy中的模型進行身份驗證。 從昨天開始,我一直在努力解決這個問題。 如果有人可以幫助我,我將非常感激。 因此,我有一個視圖login.xml
,然后是一個控制器login.js
。 login.js
包含以下功能:
var user = Alloy.Models.user; //my user.js model
function login(e) {
if($.username.value !== '' && $.password.value !== ''){
if(user.login($.username.value, $.password.value)){
Alloy.createController('home').getView().open();
$.login.close();
}
}else{
alert('Username and/or Password required!');
}
}
然后在我的user.js
模型中,就像這樣:
extendModel : function(Model) {
_.extend(Model.prototype, {
login: function(username, password) {
var first_name, last_name, email;
var _this = this;
var url = 'http://myurl.com/test.php';
var auth = Ti.Network.createHTTPClient({
onerror: function(e){
alert(e.error);
},
onload: function(){
var json = this.responseText;
var response = JSON.parse(json);
if(response.logged == true){
first_name = response.f_name;
last_name = response.l_name;
email = response.email;
_this.set({
loggedIn: 1,
username: email,
realname: first_name + ' ' + last_name,
email: email,
});
_this.save();
}else{
alert(response.message);
}
},
});
auth.open('POST', url);
var params = {
usernames: username,
passwords: password,
};
auth.send(params);
alert(_this.get('email')); //alert email
},
});
當我在login.xml
單擊login時,它將在index.js
調用函數login
。 所以,現在的問題是,當我第一次單擊該按鈕時,我從alert(_this.get('email'))
收到一個空警報,但是當我第二次單擊該按鈕時,一切正常,它會提醒電子郵件。 我不知道發生了什么事。 感謝您的幫助。
對於那些可能偶然發現相同問題的人,我想我已經解決了。 我使用回調函數來做到這一點。
請參考此Titanium HTTP請求
現在我的user.js
看起來像這樣:
extendModel : function(Model) {
_.extend(Model.prototype, {
login: function(username, password, callback) {
var first_name, last_name, email;
var _this = this;
var url = 'http://myurl.com/test.php';
var auth = Ti.Network.createHTTPClient({
onerror: function(e){
alert(e.error);
},
onload: function(){
var json = this.responseText;
var response = JSON.parse(json);
if(response.logged == true){
first_name = response.f_name;
last_name = response.l_name;
email = response.email;
_this.set({
loggedIn: 1,
username: email,
realname: first_name + ' ' + last_name,
email: email,
});
_this.save();
callback(foo); //whatever you want to send
}else{
alert(response.message);
}
},
});
auth.open('POST', url);
var params = {
usernames: username,
passwords: password,
};
auth.send(params);
},
});
我的login.js
看起來像這樣:
var user = Alloy.Models.user; //my user.js model
function login(e) {
if($.username.value !== '' && $.password.value !== ''){
var logged_in = user.login($.username.value, $.password.value, function(foo){
if(foo == bar)
call_another_function();
});
}else{
alert('Username and/or Password required!');
}
}
謝謝。 我希望這有幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.