Разработчики linkedIn как-то публиковали описание подходов по оптимизации бесконечных скролов, которые они у себя применяли:
http://engineering.linkedin.com/linkedin-ipad-5-techniques-smooth-infinite-scrolling-html5
а фэйсбук не самый хороший пример оптимизации фронтэнда.
p.s. по поводу ангуляра и делигированных событий, у меня в некоторых частях проекта используется всплытие ивентов вместо непосредственной привязки к элементу. Делается это у меня через 2 директивы (fsDelegate, и далее всякие обработчики ивентов аля fsTap и т.д). Причем fsDelegate вешает обработчики на элемент списка, fsTap регистрируется у fsDelegate (если конечно оно там будет, связь между ними через контроллер fsDelegate и параметр require: '^?fsDelegate'). Опять же при отлове события определяется какой именно элемент отработал, берется его скоуп и выполняется выражение заключенное в fsTap.
angular.module('validators', [])
.directive('maxlength', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function ($scope, $el, attrs, ngModelCtrl) {
ngModelCtrl.$parsers.unshift(validator);
ngModelCtrl.$formatters.unshift(validator);
function validator (value) {
if (value.length > attrs.maxlength) {
ngModelCtrl.$setValididy(false, 'maxlength')
}
return value;
}
}
}
})