I want to suggest create Service for fetcher, and inject it in directive.
Your fetcher can have a function into which you can pass id and it will do request to backend and will return the response, then you can inject it to your directive,
about directive: You can make a directive with restriction A and set as body attribute like this:

<body infinitescroll>

In this way you will have in directive element which already wrapped in jQuery and you do not need to do document.querySelector('body')
so after your calculation you can fetch your data from server and send it to those controller which you need through $emit or $boradcast