2012-09-12 3 views
0

절대 초보자는 여기에 있습니다. 페이지가로드되는 즉시 모델에 데이터를로드하려고합니다. 다른 것을 실행하기 전에. 지금이 코드가 있습니다. 페이지가 JSON 데이터를 검색하고 분석하고 개별 인스턴스를 생성하는 모델로 전달 init 함수가 호출 제어기를 로딩 완료 그래서spine.js 시작시 모델 인스턴스 채우기

// Model code 
var Portfolio = Spine.Model.sub({}); 
Portfolio.configure("Portfolio") 

Portfolio.extend({ 
    populate: function(values){ 
    for(var i in values[0]){ 
    // add attributes to Model 
     this.attributes.push(i); 
    } 
    for(var j = 0; j < values.length; j++){ 
     var tmpInst = this.create(values[j]); 
     tmpInst.save(); 
    } 
    } 
}); 

// app controller code 
$(function(){ 
    var App =Spine.Controller.sub({ 
    init: function(){ 
     jQuery.getJSON("../xml/data.json", 
     function(result){ 
      Portfolio.populate(result['content']); 
     } 
    ).complete(function(result) { 
      // do other stuff 
     }); 
    } 
    }) 
    var app = new App(); 
}); 

.

내가 잘못 했나요? 문서에서 Fetch 함수를 보았지만 어떻게 작동하는지 예제가 없습니다.

답변

0

이 작업을 수행하기 위해 척추의 프레임 워크를 사용 할 수 있습니다 :

  1. 대신 자신의 jQuery.getJSON()을 발사, 모델의 Spine.Ajax을 포함한다.
    Portfolio.extend(Spine.Model.Ajax);
  2. 'XML/data.json'
  3. 전화 Portfolio.fetch()
  4. 오버라이드 같은 당신의 포트폴리오 개체에 URL 속성/메서드를 추가 서버에 Spine.Model.host 설정 Portfolio.fetch() 함수는 배열 데이터의 노드 또는 설정과 마찬가지로 염두에 둔 초기화를 추출합니다. 만약 내가 잘못하지 않았다면 fetch()는 JSON에 제공된 모든 속성을 모델 @configure call에 설정하지 않아도 모델을 구성하지 않더라도 구성 할 수 있습니다.
+0

감사합니다. Alon .... 나는 백본으로 이동했습니다. 끝. 나는 커피 스크립트로 쓰여진 모든 코드 예제에 질려 버렸다. –