2012-05-18 6 views
0

나는이 작업을 가장 효과적으로 수행하는 방법을 찾는데 어려움을 겪고 있습니다. 나는 그 initialize 메소드에서 몇 개의 콜렉션을 인스턴스화하는 모델을 가지고있다. 그 모델을 인스턴스화 한 직후, 그 컬렉션 중 하나에서 모델을 가져와야하지만 그 모델을 얻으 려 할 때 사용할 수없는 것 같아 대신 결국 '정의되지 않음'을 얻게됩니다.개체가 백본에서 인스턴스화 될 때까지 기다리는 중

var App = Backbone.Model.extend({ 
    initialize: function() { 
     this.users = new Users(); 
    } 
}); 
app = new App(); 
someUser = app.users.get("someuserID"); // -> undefined 

을하지만 내가 할 경우 :

var App = Backbone.Model.extend({ 
    initialize: function() { 
     this.users = new Users(); 
    } 
}); 
app = new App(); 
setTimeout(function(){ 
    someUser = app.users.get("someuserID"); // -> user instance 
},3000); 

내가 그 이벤트를 수신하지만 이벤트가 트리거되지 않습니다 다음 앱의 초기화 방법에 this.trigger("loaded")을 추가하고 노력이 내가 가진 것입니다. 좋아요 :

var App = Backbone.Model.extend({ 
    initialize: function() { 
     this.users = new Users(); 
     this.trigger("loaded"); 
    } 
}); 
app = new App(); 
app.on("trigger",function(){ // -> never actually triggers 
    someUser = app.users.get("someuserID"); 
}); 

아이디어가 있으십니까?

사용자 컬렉션은 편안한 API에서 사용자를 올바르게 가져옵니다. 컬렉션에 .fetch 완료되면

그것이 Backbone documentation 당하는 reset 이벤트가 발생합니다,

루이스

+0

나는 그것의 초기화 방법은 않습니다 내에서 개체에 대한 이벤트를 트리거 의심하는 : 당신은 여기 Users 클래스를 포함하지만, 그냥 수집 및 하나가 아닌 래퍼 가정하지 않은, 다음을 수행 할 것 객체가 초기화되지 않았기 때문에 실제로 작동하지 않습니다. 맞습니까? 그래서 내 질문이있을 수 있습니다 : 거기에 초기화 후 "초기화 된"이벤트를 트리거하는 방법은 무엇입니까? – luisgo

답변

1

을 주셔서 감사합니다.

var App = Backbone.Model.extend({ 
    initialize: function() { 
     this.users = new Users(); 
    } 
}); 
app = new App(); 
app.users.on('reset',function() { var someUser = app.users.get("someuserID"); }); 
+0

Arrrgggg !!! 너는 나를 때렸다! 하하. 방금 예를 보았습니다. 하지만 고마워. 네가 이겼다! – luisgo

관련 문제