FlexSlider Directive for AngularJS
Provides a flex-slider
directive to include and initialize a FlexSlider slideshow in an AngularJS application.
Intallation
To install using Bower:
bower install angular-flexslider
Setup
In your document header include FlexSlider's CSS:
<link rel="stylesheet" type="text/css" href="/components/flexslider/flexslider.css">
Then include the scripts (order is relevant):
<script src="/components/jquery/jquery.js"></script>
<script src="/components/flexslider/jquery.flexslider.js"></script>
<script src="/components/angular/angular.js"></script>
<script src="/components/angular-flexslider/angular-flexslider.js"></script>
In your AngularJS app, you'll need to import the angular-flexslider
module:
angular.module('myModule', ['angular-flexslider']);
Usage
This module will define a single directive flex-slider
that can be used either as
an element or attribute.
Assuming a mySlides
variable is present in the current scope, a FlexSlider instance
can be declared like so:
<flex-slider slide="s in mySlides">
<li>
<img ng-src="{{s}}">
</li>
</flex-slider>
The slide
argument works similarly to ngRepeat
in which you can specify a tracking expression.
The <li>
element should be defined and it can be used to specify data-thumbs
attribute for FlexSlider thumbs or, for example, ng-switch
to select the content
markup.
Warning to UI Bootstrap users: You must use the flex-slide
argument instead of slide
to avoid name conflict with the carousel. This is:
<flex-slider flex-slide="s in mySlides">
<li>
<img ng-src="{{s}}">
</li>
</flex-slider>
Properties
FlexSlider initialization properties can be specified as attributes of flex-slider
directive using dash separated attributes instead of cammel case.
For example, the property controlNav
can be specified via the attribute control-nav
.
The FlexSlider callback API can also be used by specifying attributes with the appropriate API name containing AngularJS expressions.
Besides FlexSlider properties, one can specify a slider-id
attribute to set an
id to the actual slider. If not specified and an id attribute is specified to
the flex-slider
element, the actual slider will have an id of <id>-slider
.
The list of available properties (from this page):
namespace: "flex-" //{NEW} String: Prefix string attached to the class of every element generated by the pluginselector: ".slides > li" //{NEW} Selector: Must match a simple pattern. '{container} > {slide}' -- Ignore pattern at your own perilanimation: "fade" //String: Select your animation type, "fade" or "slide"easing: "swing" //{NEW} String: Determines the easing method used in jQuery transitions. jQuery easing plugin is supported!direction: "horizontal" //String: Select the sliding direction, "horizontal" or "vertical"reverse: false //{NEW} Boolean: Reverse the animation directionanimationLoop: true //Boolean: Should the animation loop? If false, directionNav will received "disable" classes at either endsmoothHeight: false //{NEW} Boolean: Allow height of the slider to animate smoothly in horizontal modestartAt: 0 //Integer: The slide that the slider should start on. Array notation (0 = first slide)slideshow: true //Boolean: Animate slider automaticallyslideshowSpeed: 7000 //Integer: Set the speed of the slideshow cycling, in millisecondsanimationSpeed: 600 //Integer: Set the speed of animations, in millisecondsinitDelay: 0 //{NEW} Integer: Set an initialization delay, in millisecondsrandomize: false //Boolean: Randomize slide order // Usability featurespauseOnAction: true //Boolean: Pause the slideshow when interacting with control elements, highly recommended.pauseOnHover: false //Boolean: Pause the slideshow when hovering over slider, then resume when no longer hoveringuseCSS: true //{NEW} Boolean: Slider will use CSS3 transitions if availabletouch: true //{NEW} Boolean: Allow touch swipe navigation of the slider on touch-enabled devicesvideo: false //{NEW} Boolean: If using video in the slider, will prevent CSS3 3D Transforms to avoid graphical glitches // Primary ControlscontrolNav: true //Boolean: Create navigation for paging control of each clide? Note: Leave true for manualControls usagedirectionNav: true //Boolean: Create navigation for previous/next navigation? (true/false)prevText: "Previous" //String: Set the text for the "previous" directionNav itemnextText: "Next" //String: Set the text for the "next" directionNav item // Secondary Navigationkeyboard: true //Boolean: Allow slider navigating via keyboard left/right keysmultipleKeyboard: false //{NEW} Boolean: Allow keyboard navigation to affect multiple sliders. Default behavior cuts out keyboard navigation with more than one slider present.mousewheel: false //{UPDATED} Boolean: Requires jquery.mousewheel.js (https://github.com/brandonaaron/jquery-mousewheel) - Allows slider navigating via mousewheelpausePlay: false //Boolean: Create pause/play dynamic elementpauseText: 'Pause' //String: Set the text for the "pause" pausePlay itemplayText: 'Play' //String: Set the text for the "play" pausePlay item // Special propertiescontrolsContainer: "" //{UPDATED} Selector: USE CLASS SELECTOR. Declare which container the navigation elements should be appended too. Default container is the FlexSlider element. Example use would be ".flexslider-container". Property is ignored if given element is not found.manualControls: "" //Selector: Declare custom control navigation. Examples would be ".flex-control-nav li" or "#tabs-nav li img", etc. The number of elements in your controlNav should match the number of slides/tabs.sync: "" //{NEW} Selector: Mirror the actions performed on this slider with another slider. Use with care.asNavFor: "" //{NEW} Selector: Internal property exposed for turning the slider into a thumbnail navigation for another slider // Carousel OptionsitemWidth: 0 //{NEW} Integer: Box-model width of individual carousel items, including horizontal borders and padding.itemMargin: 0 //{NEW} Integer: Margin between carousel items.minItems: 0 //{NEW} Integer: Minimum number of carousel items that should be visible. Items will resize fluidly when below this.maxItems: 0 //{NEW} Integer: Maxmimum number of carousel items that should be visible. Items will resize fluidly when above this limit.move: 0 //{NEW} Integer: Number of carousel items that should move on animation. If 0, slider will move all visible items. // Callback API{} //Callback: function(slider) - Fires when the slider loads the first slide{} //Callback: function(slider) - Fires asynchronously with each slider animation{} //Callback: function(slider) - Fires after each slider animation completes{} //Callback: function(slider) - Fires when the slider reaches the last slide (asynchronous){} //{NEW} Callback: function(slider) - Fires after a slide is added{} //{NEW} Callback: function(slider) - Fires after a slide is removed