아래 코드 블록에서 remoteAPIObj
에 대한 initialize1
및 initialize2
호출이 모두 내 렌더링을 렌더링하기 전에 완료되었는지 확인해야합니다. 두 함수 모두 AJAX 쿼리를 수행하고 주어진 콜백 함수를 실행합니다.Backbone.js는 렌더링하기 전에 콜백 할 때까지 대기합니다.
그래서 다른 함수 renderOnce
을 정의하고 underscore.js 함수 after
을 사용하여 실제로 실행되기 전에 renderOnce
이 실제로 2 번 호출되었는지 확인합니다. 이 접근법에 빠진 것이 있습니까? 아니면 다른 제안이 있습니까?
window.MyView = Backbone.View.extend({
el: $('#right-container'),
render: function(eventName) {
var template = Handlebars.compile($("#right-template").html());
$(this.el).html(template(remoteAPIObj.getData()));
return this;
},
initialize: _.once(function() {
var self = this;
remoteAPIObj.initialize1(function(){self.renderOnce();});
remoteAPIObj.initialize2(function(){self.renderOnce();});
}),
renderOnce: _.after(2, function() {
this.render();
})
});
나는 $ .when가 initialize1과 2의 콜백 모두가 실행될 때까지 기다리지 않을 것이라고 생각한다. 그래서 나는 그것들을 작동시키기 위해 동기식으로 동작시켜야 할 것이다. – osoner
만약에 그것을 지연 객체로 만들면 나는 귀엽다. 둘 다 기다려야합니다. 몇 가지 테스트 아약스 코드로 시험해보기에 충분하다. – JohnP
initialize1과 initialize2에서 return $ .ajax ({...})를 사용하면 $가 실제로 만들어집니다. – osoner