首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法让iscroll4播放backbone视图

无法让iscroll4播放backbone视图
EN

Stack Overflow用户
提问于 2012-03-13 04:54:11
回答 1查看 2.4K关注 0票数 2

我正在尝试在backbone.js应用程序中使用iScroll4。我有几个动态加载的列表,我希望在加载适当的视图后初始化iScroll。

我试图在列表视图完成加载时调用'new iScroll‘,但我终生无法弄清楚如何做到这一点。

有没有人让这两个人一起工作?有没有一个主干视图在元素加载后初始化滚动条的例子?

EN

回答 1

Stack Overflow用户

发布于 2012-03-13 09:09:55

你是对的,你必须先加载视图,或者在之后防御性地刷新iscroll

在我们的应用程序中,我们通常使用render方法来呈现视图,并使用postRender方法来处理这些额外插件的初始化,比如iscroll

当然,你需要一些手工工作来完成它,但这是它的要点:

代码语言:javascript
复制
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
        });
    }

});

现在调用这些方法,我们在我们的视图之外做了这件事,因为我们需要一些视图管理器来处理这件事,但归结起来是这样的

代码语言:javascript
复制
    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();
    }
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9674665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档