在将自定义css类动态添加到dc.selectMenu时,IE11会在应用过滤器时将其踢出。现在,我使用renderlet将它们再次推入。由于增加了填充或宽度/高度,这会导致“毛刺” /移动内容。
您可以通过在我的block的选择框中选择一个选项来重现该问题。
这是一个错误吗?有谁知道更清洁的解决方法而不导致这些故障出现?
答案 0 :(得分:1)
我们发现IE11实际上是crashes on Win8 if you try to update a selectMenu!因此,在该浏览器上we only render, don't attempt to redraw选择菜单。
这就是为什么您需要重新应用它。
在尝试这一点时,我发现仅移动就足够了
.on('renderlet', ...
可以归为selectMenu
所在的地方(因为它正在修改该小部件)。我认为这是可行的,因为选择菜单不使用任何过渡,并且没有延迟。
不过,更一般而言,在任何现代版本的dc.js中,您都应该真正使用pretransition
事件,该事件在任何转换之前触发。总而言之:
selectMenu.on('pretransition', function(chart){
selectMenu.select('select').classed('uk-select', true);
});
尽管这是一个很酷的词,renderlet
很少是正确的事件。您会在很多示例中看到它,因为它可以追溯到dc.js的早期版本,但是它在所有转换完成之后才发生。
如果您使用pretransition
,则有机会在浏览器甚至没有刷新之前就进行更改。