자습서 코드를 통해 작업 중이며 대부분의 자습서 코드처럼 "json"개체가 자바 스크립트 파일의 간단한 개체로 추가되어 위조됩니다. 대신 서버에서 호스팅 된 파일에서 JSON을 가져 오려고합니다. 좀 더 현실감있게하려고 노력 중입니다. 그럼에도 불구하고 바인딩이 작동하지 않는 것 같습니다.Backbone.js JSON을 가져 오는 데 문제가 있습니다.
자바 스크립트 안에 "json"개체가 포함 된 데모 코드 (여기서는 작동 중임)를 볼 수 있습니다.
은 내 원하는 작업은 여기에서 볼 수 있습니다.
은 내 원격 JSON은 여기 json file 있습니다 - 당신은 "포크"제 2 바이올린은, 테스트 환경이 테스트 (백본, JQuery와 모든 온보드, 밑줄)을 위해 존재합니다.
내 문제의 핵심은 컬렉션을 사용하는 "컬렉션"과 "보기"를 둘러싼다고 생각합니다.
var Contacts = Backbone.Collection.extend({
model: Contact,
url: 'http://sturim.me/contacts.json',
parse: function(data) {
return data.objects;
}
});
//define master view
var ContactsView = Backbone.View.extend({
el: $("#contacts"),
initialize: function() {
this.collection = new Contacts();
this.collection.fetch();
this.render();
},
render: function() {
this.$el.find("article").remove();
_.each(this.collection.models, function(item) {
this.renderContact(item);
}, this);
},
renderContact: function(item) {
var contactView = new ContactView({
model: item
});
this.$el.append(contactView.render().el);
}
});
감사합니다. @loganfsmyth - 저에게 더 가까워졌습니다. 나는 파스 함수가 정확히 어떻게 작동하는지 작동시킬 수 없었다. 나는 이것을해야했다 : "return response.contactsHolder". 어느 것이 더 잘 작동하도록 만들었습니까. 또한 이벤트를 등록 할 수있는 적절한 위치에 '재설정'이 있습니까? 트리거를 '리셋'합니까? – rsturim
@rsturim 다행입니다. 당신이 게시 한 코드에 응답이라는 변수가 없다는 것을 감안할 때'response.contactsHolder'가 어떻게 작동하는지 모릅니다. 여러분이 게시 한 JSON에'contacts'를 사용 했으므로 변경해야한다고 생각합니다. fetch는 콜렉션의 내용을 삭제하고 다시 생성하기 때문에 'reset'은 가져온 후에 시작되므로 해당 렌더링을 배치하기에 적당한 장소입니다. 백본은 매우 유연합니다. 그래서 어디에 두어야할까요? – loganfsmyth
도움을 주셔서 감사합니다. – rsturim