diff --git a/src/lib/template/dom-repeat.html b/src/lib/template/dom-repeat.html index 8082469384..95b10ab3dd 100644 --- a/src/lib/template/dom-repeat.html +++ b/src/lib/template/dom-repeat.html @@ -191,6 +191,17 @@ */ delay: Number, + /** + * Count of currently rendered items after `filter` (if any) has been applied. + * If "chunking mode" is enabled, `renderedItemCount` is updated each time a + * set of template instances is rendered. + * + */ + renderedItemCount: { + type: Number, + notify: true + }, + /** * Defines an initial count of template instances to render after setting * the `items` array, before the next paint, and puts the `dom-repeat` @@ -438,6 +449,8 @@ // `item` may not be sufficient if the pooled instance happens to be // the same item. this._pool.length = 0; + // Set rendered item count + this.renderedItemCount = this._instances.length; // Notify users this.fire('dom-change'); // Check to see if we need to render more items diff --git a/test/unit/dom-repeat.html b/test/unit/dom-repeat.html index bf9fd5a9d5..1164fd433a 100644 --- a/test/unit/dom-repeat.html +++ b/test/unit/dom-repeat.html @@ -115,6 +115,7 @@

x-repeat-chunked

test('basic rendering, downward item binding', function() { var stamped = Polymer.dom(configured.root).querySelectorAll('*:not(template)'); assert.equal(stamped.length, 3 + 3*3 + 3*3*3, 'total stamped count incorrect'); + assert.equal(configured.$.repeater.renderedItemCount, 3, 'rendered item count incorrect'); assert.equal(stamped[0].itemaProp, 'prop-1'); assert.equal(stamped[0].computeda, 'prop-1+itemForComputedA'); assert.equal(stamped[0].indexa, 0); @@ -282,6 +283,7 @@

x-repeat-chunked

CustomElements.takeRecords(); var stamped = Polymer.dom(configured.root).querySelectorAll('*:not(template)'); assert.equal(stamped.length, 2 + 2*3 + 2*3*3, 'total stamped count incorrect'); + assert.equal(configured.$.repeater.renderedItemCount, 2, 'rendered item count incorrect'); assert.equal(stamped[0].itemaProp, 'prop-1'); assert.equal(stamped[0].indexa, 0); assert.equal(stamped[13].itemaProp, 'prop-3');