2011-12-08 3 views
2

http://jsfiddle.net/nf8NM/3/백본 컬렉션 JSONP 아약스 결과는이 백본에 첫 입성입니다 제대로

모델을 생성하지 않으며 단순히 Dribbble에서 API 호출을 가져 오기 위해 노력하고 있습니다.

저는 백본에서 가장 많이 사용하는 방법을 시도하고 있습니다. 그러나 컬렉션을 만드는 시점에서 재미있는 일을하고있는 것으로 보입니다.

저는이 시점에서 실제로 렌더링하는 것에 대해별로 신경 쓰지 않습니다. 단지 컬렉션이 Api의 각 응답에 대한 모델로 올바르게 설정되기를 바랍니다.

모든 힌트와 방향이 좋습니다. 이 모든 일을 완전히 잘못하고 있습니까?

답변

15

문제점이 확실하지 않습니다. 관심사를 분리하기 위해 컬렉션 클래스를 약간 다시 작성하면 완벽하게 유효한 모델을 얻을 수 있습니다.

Shot = Backbone.Model.extend({ 
    initialize:function(opts) { 
     console.log("init shot : "+opts.id); 
    } 
}); 
ShotsList = Backbone.Collection.extend({ 
    model: Shot, 
    sync: function(method, model, options) { 
     var params = _.extend({ 
      type: 'GET', 
      dataType: 'jsonp', 
      url: model.url(), 
      processData: false 
     }, options); 

     return $.ajax(params); 
    }, 
    parse: function(response) { 
     return response.shots; 
    }, 

    url: function() { 
     return "http://api.dribbble.com/players/" + encodeURIComponent(this.player) + "/shots?per_page=18"; 
    } 
}); 

s=new ShotsList(); 
s.bind("reset",function(collection) { 
    console.log(collection.models); 
    console.log(collection.pluck("image_teaser_url")); 
}); 
s.player="jordan"; 
s.fetch(); 
+0

감사합니다. 나는 그 문제가 무엇 인지도 모르겠다. 그러나 당신이 그들을 가지고있는 것처럼 이것을 재배치 한 후에 그것은 작동하는 것처럼 보였던 다른 약간의 비트를 정리했다. 다시 한번 감사드립니다. – mattl