我在做一个水平滑动的效果,效果有但是总报错,
就这个,代码就很简单
初始化一下
setTimeout(function(){
var myScroll = new IScroll("#wrapper",{
scrollX:true,
})
},400)
这里加定时器是因为我用了angular.js不加定时器的话滑动是不生效的,这个我也不知道为什么,轮播也是这样,必须要加计时器.
我在做一个水平滑动的效果,效果有但是总报错,
就这个,代码就很简单
初始化一下
setTimeout(function(){
var myScroll = new IScroll("#wrapper",{
scrollX:true,
})
},400)
这里加定时器是因为我用了angular.js不加定时器的话滑动是不生效的,这个我也不知道为什么,轮播也是这样,必须要加计时器.
一般我都不喜欢回答这么简单的问题,不过昨天到今天看到好多人怼大漠穷秋,心情有点爽,就写两句吧
为什么会报错?
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结构是否有问题。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答1.4k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
可能是实例化IScroll的时候这个元素下面确实还没有子元素 试着把定时器时间再调长一些呢