вы правы, вы должны сначала загрузить представление,
или обязательно обновите iscroll потом
в наших приложениях мы обычно используем метод рендеринга для рендеринга вида
и иметь метод postRender, который обрабатывает инициализацию этих дополнительных плагинов, таких как iscroll
конечно, вам нужна ручная работа, чтобы сделать это, но это суть этого:
var myView = Backbone.View.extend({
// more functions go here, like initialize and stuff... but I left them out because only render & postRender are important for this topic
// lets say we have a render method like this:
render: function() {
var data = this.collection.toJSON();
this.$el.html(Handlebars.templates['spotlightCarousel.tmpl'](data));
return this;
},
// we added the postRender ourself:
postRender: function() {
var noOfSlides = this.collection.size();
$('#carouselscroller').width(noOfSlides * 320);
this.scroller = new IScroll('carouselwrapper', {
snap: true,
momentum: false,
hScrollbar: false
});
}
});
теперь вызов этих методов
мы сделали это вне нашего представления, так как нам нравится какой-то менеджер представления, чтобы справиться с этим
но это сводится к этому
var col = new myCollection();
var view = new myView({ collection: col });
$('#wrapper').html(view.render().$el); // this chaining is only possible due to the render function returning the whole view again.
// here we always test if the view has a postRender function... if so, we call it
if (view.postRender) {
view.postRender();
}