0

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

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

我尝试将 a 添加this.trigger("loaded")到 App 初始化方法,然后监听该事件,但该事件没有触发。像这样:

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

有任何想法吗?

请注意,用户集合正在从一个 RESTful API 中正确获取用户。

谢谢,

路易斯

4

1 回答 1

1

根据Backbone 文档,当集合完成时.fetch,它将触发一个reset事件。您没有在此处包含您的课程,但假设它只是一个 Collection 而不是一个包装器,您将执行以下操作: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"); });
于 2012-05-18T22:28:47.003 回答