ng-repeat之后的AngularJS NanoScroller没有显示
AngularJS NanoScroller after ng-repeat doesn't show
我已经浏览了许多关于stackoverflow的帖子,但我还没有找到答案。我有一个jQuery滚动条插件(nanoscroll),我希望它在ng重复后更新。正如这里的许多帖子所建议的那样,我使用了这样的指令:
myApp.directive("postRender", function() {
return function(scope, element, attrs) {
jQuery('.nano').nanoScroller({preventPageScrolling: true});
}
});
然后我有这样的东西:
<div class="nano"> <!-- my scrollable area -->
<div ng-controller="MyController">
<div ng-repeat="item in items" post-render>
...
</div>
</div>
Some content here...
</div> <!-- my scrollable area -->
问题是(我不知道为什么),如果内容仅比.nano div
的可用大小大一点,则滚动条不会显示。
我相信 AngularJS 在尝试更新 nanoscroller 之前不会等到在控制器之后插入内容,并且此内容是在 posrt-render 指令之后添加的。顺便说一句,我怀疑这个问题来自 NanoScroller,因为当我按 F11 两次(全屏并返回正常模式)时,无论进行任何 DOM 修改,都会出现滚动条。
谢谢希尔纽斯
____ 答案
最后我找到了解决方案。对于那些想知道的人,有必要使用$timeout服务。诸如此类:
myApp.directive('postRender',['$timeout', function (timer) {
return {
link: function (scope, elem, attrs, ctrl) {
timer(function () {
jQuery('.nano').nanoScroller({preventPageScrolling: true})
}
, 0);
}
}
}]);
虽然我找到了一个解决方案,但我仍然不知道那里的问题。我相信这是因为角度指令没有等待 DOM 完全修改,也许存在时间问题。
OP找到了解决方案。
有必要使用$timeout服务。喜欢这个:
myApp.directive('postRender',['$timeout', function (timer) {
return {
link: function (scope, elem, attrs, ctrl) {
timer(function () {
jQuery('.nano').nanoScroller({preventPageScrolling: true})
}, 0);
}
}
}]);
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- React重新渲染但未显示正确的组件
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 音频控件在mouseover上显示,在mouseout上淡出
- 让文本输入幻灯片显示输入时的新文本输入?然后向后滑动
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 显示5秒后隐藏潜水
- 画廊图像未显示
- 不显示带有本地json文件数据的谷歌地图脚本
- 如何将json数据显示为html
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 高亮显示时编辑文本大小和颜色
- 有时数据是't显示在浏览器中
- 当鼠标悬停在文本中的单词上时显示警报
- 角度图表;t显示在我的页面中
- ng-repeat之后的AngularJS NanoScroller没有显示