2012-02-08 4 views
1

지금까지 나는 다음과 같은 코드를 가지고 있지만, 그것은 작동하지 않는 것, 내가 비동기 완료 인출 할 때 모르는 :JavaScript : Backbone.js가 json을 가져 와서 모델 컬렉션에로드합니까?

var item = Backbone.Model.extend({ 
    defaults: { 
     id: 0, 
     an_id: 0, 
     strval: null, 
     th_id: 0, 
     text: null 
    }, 
    url: 'page.php', 
    options: { 
     success: function(data) { 
      alert('s: ' + dump(data)); 
      // the dump function is my way of dumping objects into a string, 
      // use console.log if you want, as I have that disabled 
     }, 
     error: function(x, t, e) { 
      alert('e: ' + t + ', ' + e); 
     } 
    } 
}); 

var coll = Backbone.Collection.extend({ 
    model: item 
}); 

var options = new Options(); 
Backbone.sync("create", coll, item.options); // 'undefined' is not an object (evaluating c.url) in backbone-min.js 

업데이트

내가 수정 한 지금 가지고있는 코드에 대한 원래 코드와 백엔드는 이제 New, Update, Save 및 Delete 요청의 차이점을 알 수 있습니다.

여전히 컬렉션 채우는 방법을 찾을 수 없습니다 coll.

+0

당신이하고 싶은 일에 달려 있습니다. 일반적으로 뷰를 모델에 연결하고 뷰의 렌더링 메서드를 모델링 한 이벤트에 바인딩하려고합니다. 가져 오는 경우 서버에서 응답이 반환되면 재설정이 실행되므로보기에 재설정 이벤트를 바인딩하십시오. – kinakuta

+0

@kinakuta, 나는 그 중 아무 것도 할 수있는 방법을 모릅니다, 감사합니다! –

답변

1

Backbone.Collection은 모델에서 컬렉션을 "상속"하려고하는 것처럼 보입니다. 올바른 접근 방식이 아닙니다.

컬렉션은 모델 집합으로되어 있습니다. "변경"이벤트를 바인딩 할 수 있습니다. 이벤트는 "추가"및 "제거"이벤트를 수신하고 서버에서 컬렉션을 가져오고 Underscore.js의 전체 제품군을 사용합니다. 행동 양식.

+0

제가 지적했듯이이 라이브러리를 사용하기 시작했습니다. 목록 모델을 올바르게 저장하고 변경 사항을 수신하고, 이벤트를 추가 및 제거하고, 사용 가능한 컬렉션 목록을 얻는 방법에 대한 확실한 제안이 있습니까? –

+0

코드를 업데이트했습니다. 내 컬렉션을 채우려면 어떻게해야합니까? –

0

가져 오기 호출에 성공 처리기를 추가 할 수 있습니다. 이것을 시도하십시오 :

coll.fetch({ 
     success: function() { 
      alert("success"); 
      console.log(coll.toJSON()); 
     }, 
     error: function(){ 
      alert("error")} 
    });  
+0

성공 처리기가 호출되었지만'toJSON()'함수는 빈 문자열을 표시합니다. –

+0

api 호출과 같은 소리가 올바르게 구성되지 않았습니다. 브라우저의 개발자 도구에 들어가서 네트워크 호출이 무엇인지 확인하고 전화가 무엇을 반환하는지 확인할 수 있는지 물어볼 것입니다. 또한 API 호출을 테스트하는 데 유용한 도구입니다. (크롬의 경우) https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDAQFjAA&url=https%3A% 2F % 2Fchrome.google.com % 2Fwebstore % 2Fdetail % 2Fhgmloofddffdnphfgcellkdfbfbjeloo & ei = Ge4yT5LwG83LrQfy0fGsDA & usg = AFQjCNFbhSdZTBn3IVB6kaplCJIs613x_Q – Lucas

+0

내 코드를 업데이트했습니다. 내 컬렉션을 어떻게 popalte 할 수 있습니까? –

관련 문제