等待在骨干中实例化对象

时间:2012-05-18 22:13:39

标签: javascript backbone.js

我很难搞清楚如何做到最好。我有一个模型,在其初始化方法中实例化一些集合。在实例化该模型后,我需要立即在其中一个集合中获取模型,但当时我尝试获取该模型似乎不可用,所以我最终得到“未定义”。这就是我所拥有的:

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);

我尝试在App初始化方法中添加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");
});

有什么想法吗?

请注意,Users集合IS是从一个安静的API中正确地提取用户的。

谢谢,

路易斯

1 个答案:

答案 0 :(得分:1)

当集合完成.fetch后,它会根据Backbone documentation触发reset个事件。你没有在这里列出你的Users课程,但假设它只是一个集合而不是一个包装,你可以做以下事情:

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"); });