다음과 같이 시도합니다. 먼저 활성 사이트 사용자 목록을로드하고 각 사용자는 영화 목록과 연결됩니다. 사용자를 클릭하면 다음 메뉴에 그의 영화 목록을 표시하고 싶습니다. 그러나 초기 JSON 요청에서 각 사용자의 전체 영화 목록을로드하는 대신 backbone-relational 패키지로 묶인 model.fetchRelated ("key") 옵션을 사용하여 일부 지연로드를 시도합니다. 내보기에서backbone.js 모델에 중첩 된 배열에서 컬렉션을 채우는 중
, 나는 이벤트 리스너를 가지고 :
events: {
'click .username': 'showMovies'
},
showMovies: function(event){
event.preventDefault();
this.model.select();
}
내 모델에서 내가 선택 기능이
:select: function(){
this.set({selected: true});
this.fetchRelated("movies");
var usermovies = new UserMovieCollection();
usermovies.add(this.get("movies"));
}
문제는 그런 this.fetchRelated ("영화") 비동기 이벤트이므로 'add'가 호출되면 동영상이 실제로로드되지 않습니다. 그래서 내 옵션이 여기에 있는지 궁금 하네. 내가 가진 한 가지 아이디어는 어떻게 든 이것을 jQuery의 지연 객체로 포장하는 것이 었습니다 ... 기본적으로 콜백을 사용합니다. 나는 정확히 어떻게 해야할지 잘 모르겠다. 콜백 형식을 사용하는 것이 정말 좋은 백본 디자인인지 모르겠다.
누구든지 콜백 또는 일부 (선호) 시스템을 사용하여 구현할 수있는 방법을 알고 있습니까? 감사!
편집 : 관리가
그것이 연기를 사용하려면,하지만 연기하지 않고 더 나은 백본 솔루션이 있다면 난 아직도 궁금하네요.
select: function(){
var model = this;
var usermovies = new UserMovieCollection();
$.when(this.fetchRelated("movies")).then(function(){
console.log(model.get("movies"));
});
}
응답 해 주셔서 감사합니다. 나는 이와 같은 것이 효과가있을 것이라고 생각했지만, 불행히도 실제로 그 일을하지 않는 것 같습니다. 지금은 $ .when을 사용하고 jquery에서 .then을 사용한 다음 collection.each (function (model) {}); 그들을 렌더링합니다. 그것은 솔직히 말해서 가난한 해결책 인 것 같습니다. – bento