2012-12-07 2 views
2

PUT 및 POST 요청과 관련된 다른 질문이 있습니다. 그래서, 여기에는 "name"과 "link"와 같은 필드가있는 양식이 있습니다.Backbone.js의 PUT 및 POST 요청

해당 양식을 제출할 때 this.model.save()를 수행 할 때 해당 양식을 서버에 게시 할 수 없습니다.

또한 모델이 POST를 호출하는시기와 PUT 요청을 호출 할시기를 어떻게 이해합니까? 이후 내 API 응답에서 어떤 "id"특성을 가지고 있지 않기 때문에 내 모델에 대한 ID도 갖고 있지 않습니다.

그래서 POST 요청으로 "제출"버튼을 클릭하면 내 양식 필드 값을 전달합니까? 또한

, 내가 요청을 호출 할 수있는 방법이 있나요 : 예를 들면 : 나는 내 양식의 "업데이트"버튼을 누르 경우, 내 모델

updateModel:function(options){ 
this.update("update","/messages",[options]) 
} 

또는 GET에서 함수를 호출합니다 요청 isNew()의 리턴 값에 기초 POST 또는 PUT 여부를 결정할 방법이 저장

getModel:function(options){ 
this.update("read","/messages",[options]) 
} 
+1

"해당 양식을 제출할 때 this.model.save();를 수행 할 때 해당 양식을 서버에 게시 할 수 없습니다." ** 왜 이렇게 할 수 없습니까? ** –

+0

확실하지 않습니다 ... POST 또는 PUT 메서드를 호출하지 않습니다 – Sudo

+0

아무 것도 자동으로 수행하지 않습니다. 내 대답처럼'save'를 호출하는 이벤트 핸들러가 필요합니다. –

답변

2

같이 판독 될 수있다. 이 방법은 일반적으로 id이 채워지는지 확인합니다. 다른 표시기를 사용하도록 재정의 할 수 있습니다.

제출시 양식 필드 값을 저장 메소드로 직접 전달합니다. 이런 식으로 뭔가가 :

//In your view 
events : {"submit" : "onSubmit"}, 
onSubmit : function(e) { 
    e.preventDefault(); 
    this.model.save({name: this.$("#name").val()}, { 
    success : function (newModel) { /* Do something here. */ } 
    }); 
} 

또 다른 대안은 당신을 위해 DOM와 모델 사이의 동기화를 처리 할 수 ​​Backbone.Modelbinder 같은 라이브러리를 사용하는 것입니다.

모델에 새 메소드를 정의 할 필요는 없습니다. 대신 모델 또는 해당 컨트롤러에서 적절한 url 메서드를 정의해야합니다. 그런 다음 정상적인 fetchsave 메소드를 사용하여 가져 오기/업데이트를 처리 할 수 ​​있습니다.