Как вызвать событие после рендеринга представлений с помощью Backbone.js? - PullRequest
0 голосов
/ 19 января 2012

У меня много просмотров, которые работают с шаблонами. Рендеринг с представлениями работает отлично, теперь в моем маршрутизаторе я ищу способ вызвать событие, когда все представления отрисованы! Я использовал загрузчик js как LAB.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));

Спасибо

обновление: те же проблемы

Ответы [ 2 ]

1 голос
/ 20 января 2012

Я нашел решение, просто используя $ .when (). Then () из jquery, действительно удивительно, что я никогда не видел эту функцию 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));
0 голосов
/ 20 января 2012

Вы можете использовать обратный вызов success метода fetch, если вам просто нужно подождать получения коллекции (источник: http://backbonejs.org/#Collection-fetch).

Предпочтительно использовать метод 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));
...