虚拟中继器和量角器

时间:2015-12-23 21:26:58

标签: javascript angularjs selenium protractor angular-material

问题:

在量角器中找到Virtual Repeaters的规范/首选方式是什么?

故事:

在Angular Material设计中,有Virtual Repeater有助于在视口区域中可见的行的动态重用的帮助下提高渲染性能。样品:

<div class="md-virtual-repeat-offsetter" style="transform: translateY(0px);">
    <div md-virtual-repeat="item in ctrl.dynamicItems" md-on-demand="" class="repeated-item ng-binding ng-scope flex" flex="">0</div>
    <div md-virtual-repeat="item in ctrl.dynamicItems" md-on-demand="" class="repeated-item ng-binding ng-scope flex" flex="">1</div>
    <div md-virtual-repeat="item in ctrl.dynamicItems" md-on-demand="" class="repeated-item ng-binding ng-scope flex" flex="">2</div>
</div>

目前,我必须使用by.css定位技术:

$$('[md-virtual-repeat="item in ctrl.dynamicItems"]');

奖金问题:

有没有办法让by.repeater也适用于md-virtual-repeat

1 个答案:

答案 0 :(得分:5)

根据findRepeaterRows()repeaterMatch()内置函数,by.repeater定位器使用CSS选择器搜索具有不同前缀的不同“重复”类属性:

ng-repeat
ng_repeat
data-ng-repeat
x-ng-repeat
ng:repeat

然后,它会删除所有过滤器,跟踪(track by),别名(as),然后检查我们尝试匹配的转发器值。

换句话说,此时 by.repeater不会找到虚拟转发器

在此处创建了一项功能请求:

此时,考虑到虚拟转发器不支持高级语法元素trackas,我认为使用CSS选择器已经足够了:

$$('[md-virtual-repeat="item in ctrl.dynamicItems"]');