You can look into using Polymer's <iron-list>
which actually consumes all the data but it only attaches a handful of nodes to the DOM and handles data binding to display the right content as the user scrolls through.
I've used it before and got very good results with custom lists of 2000+ items (those items being complex custom elements too) scrolling seamlessly.
Though I haven't tried it myself the Polymer team claims it can be easily mixed with other frameworks.
https://www.webcomponents.org/element/PolymerElements/iron-list