Ember Infinity
Simple, flexible infinite scrolling for Ember CLI Apps. Works out of the box
with the Kaminari Gem.
Inspired by @bantic's Ember Infinite Scroll
repo, but without using controllers, in preparation for Ember 2.0.
Installation
ember install:addon ember-infinity
Basic Usage
import Ember from 'ember';
import InfinityRoute from "ember-infinity/mixins/route";
export default Ember.Route.extend(InfinityRoute, {
model() {
return this.infinityModel("product", { perPage: 12, startingPage: 1 });
}
});
Then, you'll need to add the Infinity Loader component to your template, like so:
{{#each model as |product|}}
<h1>{{product.name}}</h1>
<h2>{{product.description}}</h1>
{{/each}}
{{infinity-loader infinityModel=model}}
Now, whenever the infinity-loader
is in view, it will send an action to the route
(the one where you initialized the infinityModel) to start loading the next page.
When the new records are loaded, they will automatically be pushed into the Model array.
Advanced Usage
The infinity-loader
component as some extra options to make working with it easy!
{{infinity-loader infinityModel=model destroyOnInfinity=true}}
Now, when the Infinity Model is fully loaded, the infinity-loader
will remove itself
from the page.
{{infinity-loader infinityModel=model developmentMode=true}}
This simply stops the infinity-loader
from fetching triggering loads, so that
you can work on its appearance.
{{infinity-loader infinityModel=model loadingText="Loading..." loadedText="Loaded!"}}
By default, the infinity-loader
will just output a span
showing its status.
- reached-infinity Class Name
.infinity-loader {
background-color: wheat;
&.reached-infinity {
background-color: lavender;
}
}
When the Infinity Model loads entirely, the reached-infinity
class is added to the
component.
- infinity-template Generator
ember generate infinity-template
Will install the default infinity-loader
template into your host app, at
app/templates/components/infinity-loader
.