2013-07-08 2 views
1

다음 코드는 jquery-ajax 호출을 사용하여 잘 작동합니다. 그러나 나는 모델을 통해 값을 전달하는 방법을 알아낼 수 없습니다. 일부 연구에서 나는 무언가를했으며 아래에서 그것을 볼 수 있습니다 (아약스 호출 바로 위).백본에서 모델을 통한 데이터 전달

$ .ajax()를 login.save()로 대체하고 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"); 
          } 
      }); 

하지만, 그렇지 않습니다 백본 모델처럼 보입니다.

또한이 모델에게 URL을 통과해야합니다 명심하십시오, 그래서 당신은 아마 그것을 설정하거나 같은 인스턴스에 매개 변수로 전달해야합니다 같아요

new LoginModel({}, { url: "/someurl"}); 
+0

awesome man .. 잘 했어 .... –

+0

그래, 내가 로그인보기와 모델을 별도로 선언했다. 나는 extend() 부분에서 그것을해야한다고 생각했다. 어쨌든 .. 덕분에 .. 잘 작동한다. :) –