Таймеры или синхронизированные события для backbone.js Views - PullRequest
2 голосов
/ 02 ноября 2011

Я пытаюсь создать автоматическую карусель в виде Backbone.js так, чтобы она скользила очень часто.В идеале то, что я хотел бы, это событие таймера.Что-то вроде

events{
  "timer 5000" : "slide"
}

Я не вижу, чтобы это произошло.Я попытался запустить функцию извне.

window.setInterval(carouselView.slide, 5000);

Это работает.НО я больше не могу получить доступ к экземпляру представления.Если я сделаю console.log(this);, это даст мне Window.Я полагаю, это потому, что функция вызывается из Window, а не из экземпляра представления.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

3 голосов
/ 17 мая 2012

Я понимаю, что это старый вопрос, но вы можете сделать это без привязки.

(function(view) {
  window.setInterval(function() { view.slide(); }, 5000);
})(this);

Если вы добавите это в инициализацию своего представления, оно должно работать. В основном это создает замыкание, так что у вас все еще есть доступ к представлению внутри блока setInterval.

Я согласен, что событие таймера, такое как «таймер 5000»: «слайд», было бы хорошей функцией для Backbone, когда я гуглил свой путь в поисках чего-то в точности такого.

1 голос
/ 02 ноября 2011

Вы должны привязать функцию к контексту.Я не уверен на 100%, но думаю, что это должно работать:

slide: _.bind(function(){ ... }, this)

См. FAQ по магистрали

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...