scroll报错

我在做一个水平滑动的效果,效果有但是总报错,
clipboard.png

就这个,代码就很简单
初始化一下

    setTimeout(function(){
        var myScroll = new IScroll("#wrapper",{
            scrollX:true,
        })
    },400)

这里加定时器是因为我用了angular.js不加定时器的话滑动是不生效的,这个我也不知道为什么,轮播也是这样,必须要加计时器.

阅读 2.5k
3 个回答

可能是实例化IScroll的时候这个元素下面确实还没有子元素 试着把定时器时间再调长一些呢

一般我都不喜欢回答这么简单的问题,不过昨天到今天看到好多人怼大漠穷秋,心情有点爽,就写两句吧

为什么会报错?

IScroll要滑动,先要保证有两个div,一个wrapper,一个scroller,wrapper宽高是固定的,scroller能滚多远要依据wrapper来计算,所以,当你new IScroll的时候,如果找不到scroller就会报上图的错误,因为IScroll默认是使用第一个子元素作为scroller的。

为什么在Angular上要用定时器?

Angular是一个MVVM框架,会先执行js运算再渲染html视图,虽然我没用过Angular做过项目,但原理多少解理一些,执行js运算时只对你的html结构进行处理,事实上你的html还没在浏览器渲染出来,即是说还没有高度和宽度,滑动插件计算不出正确的滑动数值,因此滑不动,setTimeout之后视图渲染完成有了宽高再new IScroll或iscroll.refresh才能生效

setTimeout(function(){

    var myScroll = new IScroll("#wrapper",{
        scrollX:true,
    })
},400);
true后面的逗号不应该有吧。在看看你的dom结构是否有问题。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题