等待对象在主干中实例化

Waiting for an object to be instantiated in backbone

本文关键字:实例化 对象 等待      更新时间:2023-09-26

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

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 集合正在从 restful API 正确获取用户。

谢谢

路易斯

当集合完成.fetch时,它将根据主干文档触发一个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"); });