Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 合金MVC框架钛网(型号)_Javascript_Backbone.js_Titanium_Titanium Alloy - Fatal编程技术网

Javascript 合金MVC框架钛网(型号)

Javascript 合金MVC框架钛网(型号),javascript,backbone.js,titanium,titanium-alloy,Javascript,Backbone.js,Titanium,Titanium Alloy,我正在尝试使用Alloy中的模型进行身份验证。从昨天起我就一直在努力解决这个问题。如果有人能帮助我,我将非常感激。 因此,我有一个视图login.xml,然后是一个控制器login.js。login.js包含以下功能: var user = Alloy.Models.user; //my user.js model function login(e) { if($.username.value !== '' && $.password.value !== ''){

我正在尝试使用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
        },
    });
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);
    },
});
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!');
   }
}

当我在
login.xml
中单击login时,它调用
index.js
中的函数
login
。所以,现在我的问题是,当我第一次单击按钮时,我从
警报(\u this.get('email'))
中得到一个空警报,但当我第二次单击按钮时,一切正常,它会提醒电子邮件。我不知道发生了什么事。谢谢你的帮助。

我想我找到了答案,因为人们可能会遇到同样的问题。我使用了回调函数来做这件事

参考这个

现在我的
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
        },
    });
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);
    },
});
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!');
   }
}
我的
login.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
        },
    });
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);
    },
});
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!');
   }
}

谢谢。我希望这有帮助。

此代码仍然不正确。。。您应该始终执行回调。。您没有在出错时执行它conditions@AaronSaunders为什么要在
onerror
上执行回调?我假设您处理
onerror
的方式与回调中的方式不同。我想如果错误登录存在于回调中,那就好了,但我宁愿将两者分开functions@Ronnie我假设调用方希望知道发生了错误,以便能够正确处理?@AaronSaunders我认为回调是为了成功,OneError是为了处理错误。我正在从经典型过渡到合金型,所以从上周开始我就在尝试合金型。慢慢进步谢谢@AaronSaunders。我添加了对错误的回调。很抱歉迟了回复!