2013-02-04 1 views
1

양식을 통해 동적으로 모델을 추가하는 설정이 있습니다. 동일한 데이터가 표의 행에 삽입됩니다. 행이 삽입되면 삭제 버튼이 해당 행에 첨부됩니다.backbonejs에서 모델의 최신 삽입 ID를 얻는 방법

이제 삽입 된 행을 삭제하려고하면 해당 특정 모델에 고유 한 ID가 연결되어 있지 않아 DELETE 요청에서 ID가 전송되지 않기 때문에 연결할 수 없습니다. 하지만 일단 가져 오기를 수행하여 전체 컬렉션을 새로 고치면 작동합니다.

나는이 같은 CID를 사용하여 전체 모델을 가져 오기 위해이 시도 :이 작동하지 않습니다

deleterow:function(){ 

window.rowList.get(this.model.cid).destroy({wait:true,success:function(){ 

}}); 

. 나는 codeigniter에 phil sturgeon REST API를 사용하고 있습니다.

EDIT :

여기서 $ Q 이렇게 채워진
$this->response(json_encode($Q),201); 

: 응답

$this->db->where('id',$this->db->insert_id()); 
    $Q=$this->db->get('rows')->result(); 

은이 같은 데이터를 얻을 : 그래서

"[{\"id\":\"285\",\"name\":\"\",\"address\":\"\",\"city\":\"\",\"state\":\"\",\"zip\":\"\",\"email\":\"\",\"contact_number\":\"0\",\"alternate_number\":\"0\",\"row_type\":\"\",\"local_vat\":\"\",\"cst\":\"\",\"st\":\"\",\"excise_duty\":\"\"}]" 

아니고에 적절한 JSON 형식 게다가. 어떻게해야합니까?

답변

3

백본이 model.save 또는 collection.create을 사용하여 모델을 생성하거나 업데이트 할 때 서버에서 다시 전송 된 모든 JSON 데이터는 모델에 자동으로 set이됩니다. 당신은 당신의 서버를 구성해야합니다

{"foo":"bar"} 

:

var model = collection.create({foo:'bar'}); 

이는 POST 요청이 다음과 같은 몸을 가진 모델의 URL 루트로 전송하게됩니다 : 그래서 예를 들어, 당신은 새로운 모델을 저장 예를 들어, POST 요청에 대한 응답으로 생성 된 모델을 다시 보내

{"id":100, "foo":"bar"} 

등뼈가 자동으로 새로운 및 변경된 소품을 복사합니다 모델에 대한 응답에서 erty가 있으므로 다음을 갖습니다.

var model = collection.create({foo:'bar'}, {success: function() { 
    console.log(model.id); // -> 100 
}}); 
+0

아니요.하지만 model.create 메서드를 사용하여 컬렉션에 새 모델을 추가하고 있습니다. 이 경우 어떻게해야합니까? 내가 서버 측에서 수행 한 작업을 다시 응답으로 추가 한 것처럼 편집을 참조하십시오. – beNerd

+1

'Collection.create'는 제가 설명한 것과 같은 방식으로 작동합니다. 응답 특성을 새 모델에 복사합니다. 나는 이것을 반영하기 위해 나의 대답을 편집했다. 나는 PHP 나 CodeIgniter를 모르므로 서버 비트로는 당신을 도울 수 없다. 그러나 해당 응답을보고있는 위치에 따라 실제로 유효 할 수도 있습니다. 백 슬래시는 이스케이프 문자이며 IDE에서 추가 할 수 있습니다. 클라이언트 측에서 백 슬래시가 보이면 실제로 문제가 발생합니다. 누군가 다른 사람이 와서 도와 줄 수 있습니다. – jevakallio