我有以下代码,使用jquery-ajax调用编写得很好。但是我无法弄清楚如何通过模型传递值。从一些研究中我已经做了一些事情你可以在下面看到它(就在ajax调用之上)。
我想用login.save()替换$ .ajax()并通过save()传递值。请让我知道我所做的是正确的,或者是否有更好的方法。我可以在模型中编写成功和失败回调(正如我所做的那样)吗?
//Login Page View
var LoginView = Backbone.View.extend({
el:"#main-content",
initialize:function(){
console.info("Login View Initialized");
var template = _.template($('#login-template').html());
this.$el.html(template);
},
render:function(){
console.log("Login Render Function Called");
},
events:{
'click #login':'login'
},
login:function(ev){
var loginDetails = $(ev.currentTarget).serializeObject();
console.log(loginDetails);
username = $("#username").val();
password = $("#password").val();
ky = 'MTWEB';
if(username==""){
$('#username').css("border","1px solid #ff0000");
}else if(password==""){
$('#password').css("border","1px solid #ff0000");
}else{
var data = '{"un": "'+username+'","pd": "'+password+'","ky": "'+ky+'"}';
console.log(data);
//Using Backbone Model (I want to do it this way)
login.save({un : username,pd : password, ky : ky}, {
success :function(){
console.log("success");
},
error: function(){
console.log("error");
}
});
//Using Backbone Model
//jQuery Ajax Call (What i have done which works well)
$.ajax({
url:basePath+'profile/Login',
data:data,
dataType:'json',
type:'POST',
success:function(result){
$("#login_message #msg").html(result.me);
$("#login_message").css('display','block');
$("#login_message").removeClass('alert-success alert-error alert-warning');
if(result.ss==1){
$("#login_message").addClass('alert-success');
console.log(result);
return false;
}else{
$("#login_message").addClass('alert-error');
console.info("Failed to Log In.");
}
return false;
},
error:function(result){
console.log("fail :"+result);
return false;
}
});
//jQuery Ajax Call
}
return false;
}
});
var loginview = new LoginView();
答案 0 :(得分:1)
您的视图看起来没有型号
至少你需要声明一个模型并在创建它时将它传递给视图。例如
var LoginModel = Backbone.Model.extend();
var loginview = new LoginView({ model: new LoginModel() });
然后在您的视图中,您需要在模型上调用保存功能,如:
this.model.save({un : username,pd : password, ky : ky}, {
success :function(){
console.log("success");
},
error: function(){
console.log("error");
}
});
目前尚不清楚您的登录变量是什么,但它看起来不像Backbone模型。
另外请记住,您必须将模型传递给URL,因此您可能应该在实例化时将其设置或作为参数传递,如:
new LoginModel({}, { url: "/someurl"});