2014-04-07 5 views
3

나는 백본에 익숙하지 않다. 나는 아약스 전화를 아래의 방식으로 시도했다. 내 요청에 따라 데이터를 처리하는 방법을 모르겠습니다. 이 여기에 코드입니다 : 당신이 fetch()을 할 때 // 서버backbone.js를 사용하여 Ajax 호출을 만들고 처리하는 방법

var UserModel = Backbone.Model.extend({ 
    url:'http://api.geonames.org/astergdemJSON?formatted=true&lat=50.01&lng=10.2&username=demo&style=full' 
}); 

var MyView = Backbone.View.extend({ 
    initialize: function() { 
     this.model = new UserModel(); 
     this.model.fetch(); 
    }, 
    render: function() { 
     alert('do awesome stuff here'); 
    } 
}); 

답변

10

와 상호 작용

, 백본은 url에 specifiend 엔드 포인트에 대한 GET 아약스 요청을 보냅니다.

.fetch으로 전화하면 모델에서 request 이벤트가 발생하고이를 수신하면이를 구문 분석하여 모델로 설정하면 모델에서 sync 이벤트가 트리거됩니다.

데이터를 모델로 설정하기 전에 변경하려면 parse 모델을 덮어 씁니다. GET 요청에서 원시 데이터를 수신하고 모델에 설정 될 내용을 반환해야합니다.

성공 및 오류 콜백을 추가하려면 fecth({ success: ..., error: ... })에 전달하십시오. 성공 콜백은 모델에 값을 설정하고 파싱 한 후 동기화 이벤트 전에 트리거됩니다. 오류 이벤트 전에 오류 콜백이 트리거됩니다. 자세한 내용은 설명서를 참조하십시오. 이러한 콜백을 전달할 필요는 없습니다. 그거야,

var MyView = Backbone.View.extend({ 
    initialize: function() { 
     this.model = new UserModel(); 
     this.listenTo(this.model, 'sync', this.render); 
     this.model.fetch(); 
    }, 
    render: function() { 
     alert('My model loaded: ' + this.model.toJSON()); 
    } 
}); 

그리고 :

그래서, 그것은 뭔가를 할 것이다. 백본은 거의 모든 것을 제공합니다.

희망이 있습니다.

+0

@Jags 내 답변에 문제가 해결 되었다면 답을 표시하십시오. –

+0

Walter에게 감사드립니다. 나 잘하고있어. 성공/오류 콜백을 추가하려고 시도했습니다. 그것을 실행할 때 렌더링 전에 콜백이 트리거됩니다. – Jags

+0

성공 콜백은 모델에 값을 설정하고 구문 분석 한 후'sync' 이벤트 전에 트리거됩니다. 에러 콜백은'error' 이벤트 전에 트리거됩니다. 이것이이 예제에서'render' 전에 실행되는 이유입니다.'sync'를받을 때'render'가 실행되기 때문입니다. –