虚拟中继器和量角器

Virtual Repeater and Protractor

问题:

在量角器中定位 Virtual Repeaters 的 canonical/preferred 方法是什么?

故事:

在 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 一起使用?

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

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"]');