我正在尝试将ember-cloaking集成到我的应用程序中,但它似乎不能正常工作。目前,我有一个使用以下代码显示的20个项目的列表:
{{each bands itemView='matrix_band' itemController='matrix_band'}}这完全符合我的预期。所以我改成了下面的代码:
{{cloaked-collection content=bands cloakView='matrix_band' itemController='matrix_band' defaultHeight=200 offsetFixed='.matrix-header'}}当它第一次加载时,它在屏幕上显示了6个可见的项目,这是我所期望的。但是当我向下滚动时,我只得到Loading...文本。不过,它实际上从来不会揭开物品的外衣。如果我一直向下滚动页面并检查DOM,我可以看到它正确地遮盖和取消了前6个项目,但它不能用于其余14个项目。
我该如何解决这个问题呢?这有没有可能是由Ember 1.5.1而不是1.3.0 (演示使用的)引起的?
编辑:通过替换135和136行,我可以拼凑出一个修复程序。原文如下:
scrollOffset = this.get('wrapperTop') >> 0,
viewTop = $view.position().top + scrollOffset,这是我的解决办法:
scrollOffset = $(window).scrollTop(),
viewTop = $view.position().top - scrollOffset,这似乎工作正常,但滚动似乎相当粗糙(可能只是我的PC/浏览器)。而且,这看起来有点像黑客。我知道每个DOM元素都有几个不同的位置,但我对它们了解不多。看起来奇怪的是,遮盖灰尘的代码对话语和其他许多人都有效,但对我来说却失败了。这可能与我的HTML和CSS的结构方式有关吗?
EDIT2:我在我的iMac上进行了测试,它的速度比我的Macbook快得多,滚动仍然非常不稳定。因此,要么是我的更改导致了显著的性能回归,要么是我的视图绘制起来很慢,因为它们很复杂。考虑到视图相当复杂,后者似乎更有可能,但我对其他答案持开放态度。
我仍然想知道除了修改源代码之外,我还能做些什么来修复这个bug。
发布于 2014-05-19 21:18:42
你有多个问题。关于波动性的问题,我会将视图简化为单个元素并重新测试。这样你就可以知道是视图还是你的处理器。关于项目不显示的问题,它们是屏幕外的还是隐藏的?这将告诉您布局中是否存在问题,或者代码中是否存在一些糟糕的交互。
https://stackoverflow.com/questions/23565637
复制相似问题