延迟视图的实例化直到值存在

时间:2013-09-12 01:05:42

标签: javascript backbone.js

Backbone中的get函数似乎没有成功回调。有没有办法在下面的代码中延迟创建视图,直到我确定self.restaurant存在?

self.restaurant = app.collections.restaurants.get(id);
this.showView( '#main', new app.Views.RestaurantDetailView({model: self.restaurant }) );

我可以这样做

if (self.restaurant){
  this.showView( '#main', new app.Views.RestaurantDetailView({model: self.restaurant }) );

}else{ 

}

但如果self.restaurant不存在,那么我最终会做一些尴尬的事情来使其发挥作用。我认为必须有一个简单的解决方案,我不知道这个问题。

1 个答案:

答案 0 :(得分:0)

我不是使用id调用get集合,而是使用id创建一个新模型,然后在模型上调用fetch。 Fetch成功回调,因此在创建视图

之前没有等待查询完成的问题
 var restaurant = new app.Models.Restaurant({ id: id });
 var self = this;
 restaurant.fetch({
                success:function () {                           
                        self.showView( '#restaurants', new app.Views.RestaurantDetailView({model: restaurant}) );
                    }

        });