如何使用Backbone.js渲染视图后触发事件?

时间:2012-01-19 19:02:32

标签: javascript backbone.js backbone-events

我有许多使用模板的视图。渲染与视图完美,现在进入我的路由器我正在寻找一种方法来触发所有视图渲染时的事件!  我使用像LAB.js这样的js加载器,但没有任何效果!

毕竟渲染后我将事件输入firebug控制台并且它正常工作!

如何以及在此我可以放置我的事件,以便在所有视图呈现时触发它!

**我的活动:**

$('div[id ^="solfg_"]').mobilyblocks();

**路由器:**

(function () {

 window.AppRouter = Backbone.Router.extend({
 routes: {
  ""  : "init"
 },

 init: function(){

   this.solfsmodel = new Solfs();
   this.solfsmodel.fetch(); 
   this.solfsView = new SolfsView({model: this.solfsmodel});

 }

});
var app_router = new AppRouter;
Backbone.history.start();
}(jQuery));

谢谢

更新: same problems

2 个答案:

答案 0 :(得分:1)

我发现解决方案只是使用来自jquery的$ .when()。then(),真的太棒了,我从未见过这个jquery函数。

* 我的解决方案:*

(function () {

 window.AppRouter = Backbone.Router.extend({
 routes: {
   ""  : "run"
 },

initialize: function(){
  this.solfsmodel = new Solfs();

  this.solfsView = new SolfsView({model: this.solfsmodel});

},
run: function(){
  $.when(
     this.solfsmodel.fetch(); 
  ).then(function(){
     *$('div[id ^="solfg_"]').mobilyblocks();*
  });
}
});
var app_router = new AppRouter;
Backbone.history.start();
}(jQuery));

答案 1 :(得分:0)

如果只需要等待提取集合,您可以使用success fetch方法的回调(来源:http://backbonejs.org/#Collection-fetch)。

在使用其他librairies之前,最好使用Backbone.js方法。

所以你的代码应该是这样的:

(function () {

    window.AppRouter = Backbone.Router.extend({
        routes: {
            ""  : "run"
        },

        initialize: function(){
            this.solfsmodel = new Solfs();
            this.solfsView = new SolfsView({model: this.solfsmodel});
        },

        run: function(){
            this.solfsmodel.fetch({
                success: function () { 
                    $('div[id ^="solfg_"]').mobilyblocks();
                }
            );
        }
    });
    var app_router = new AppRouter;
    Backbone.history.start();
}(jQuery));