How To Add A Spinner While Loading The Content In Angularjs?
Solution 1:
<divng-app="formDemo"ng-controller="LocationFormCtrl"><div><buttontype="submit"class="btn btn-primary"ng-click="search()"><spanng-show="searchButtonText == 'Searching'"><iclass="glyphicon glyphicon-refresh spinning"></i></span>
{{ searchButtonText }}
</button></div>
All you need to do is use ng-show
or ng-hide
directives.
ng-show="expression"
<spanng-show="searchButtonText == 'Searching'"><iclass="glyphicon glyphicon-refresh spinning"></i></span>
this span will only be visible when searchButtonText
will be equal to a string 'Searching'.
You should learn more about angular's directives. They'll be useful in future.
Good luck.
Solution 2:
Use ng-show
to show (or not) the loader ng-show="test"
:
// http://icelab.com.au/articles/levelling-up-with-angularjs-building-a-reusable-click-to-edit-directive/
angular.module("formDemo", [])
.controller("LocationFormCtrl", function ($scope, $timeout) {
$scope.searchButtonText = "Search";
$scope.test="false";
$scope.search = function() {
$scope.test="true";
$scope.searchButtonText = "Searching";
$timeout(function(){
$scope.test="false";
$scope.searchButtonText = "Search";
},1000)
// Do your searching here
}
});
body {
font-family:"HelveticNeue", sans-serif;
font-size: 14px;
padding: 20px;
}
h2 {
color: #999;
margin-top: 0;
}
.field {
margin-bottom: 1em;
}
.click-to-edit {
display: inline-block;
}
input {
display: initial !important;
width: auto !important;
margin: 05px00!important;
}
.glyphicon.spinning {
animation: spin 1s infinite linear;
-webkit-animation: spin2 1s infinite linear;
}
@keyframes spin {
from { transform: scale(1) rotate(0deg);}
to { transform: scale(1) rotate(360deg);}
}
@-webkit-keyframes spin2 {
from { -webkit-transform: rotate(0deg);}
to { -webkit-transform: rotate(360deg);}
}
<linkhref="//cdnjs.cloudflare.com/ajax/libs/foundation/4.1.6/css/foundation.min.css"><linkhref="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"><!-- Optional theme --><linkhref="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css"><!-- Latest compiled and minified JavaScript --><scriptsrc="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script><scriptsrc="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script><scriptsrc="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script><scriptsrc="https://rawgithub.com/angular-ui/angular-ui/master/build/angular-ui.js"></script><divng-app="formDemo"ng-controller="LocationFormCtrl"><div><buttontype="submit"class="btn btn-primary"ng-click="search()"><spanng-show="test" ><iclass="glyphicon glyphicon-refresh spinning"></i></span>
{{ searchButtonText }}
</button></div></div>
Solution 3:
You can also use this simple directive:
https://rawgit.com/jvdvleuten/angular-button-spinner/master/demo.html
To use it, just add the button-spinner='loading'
attribute:
<buttonclass="btn btn-success"ng-click="show()"button-spinner="loading">Load</button>
It will append a spinner to it, inside the button, when your loading
variable in the scope is true.
Solution 4:
Just add an ng-show
to your spinner:
<spanng-show="loading"><iclass="glyphicon glyphicon-refresh spinning"></i></span>
and controller:
.controller("LocationFormCtrl", function ($scope) {
$scope.searchButtonText = "Search";
$scope.loading = false;
$scope.test="false";
$scope.search = function() {
$scope.test="true";
$scope.loading="true"$scope.searchButtonText = "Searching";
// Do your searching here
}
});
Then, when you get your response, set $scope.loading
to false
again
Solution 5:
Use ng-show
directive like this ng-show="test"
on spinner span:
Snippet:
// http://icelab.com.au/articles/levelling-up-with-angularjs-building-a-reusable-click-to-edit-directive/
angular.module("formDemo", [])
.controller("LocationFormCtrl", function($scope) {
$scope.searchButtonText = "Search";
$scope.test = "false";
$scope.search = function() {
$scope.test = "true";
$scope.searchButtonText = "Searching";
// Do your searching here
}
});
</style> <!-- Ugly Hack due to jsFiddle issue:http://goo.gl/BUfGZ -->
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/foundation/4.1.6/css/foundation.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <!-- Optional theme --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css"> <!-- Latest compiled and minified JavaScript --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> <!-- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> --> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> <script src="https://rawgithub.com/angular-ui/angular-ui/master/build/angular-ui.js"></script> <style> body {
font-family: "HelveticNeue", sans-serif;
font-size: 14px;
padding: 20px;
}
h2 {
color: #999;
margin-top: 0;
}
.field {
margin-bottom: 1em;
}
.click-to-edit {
display: inline-block;
}
input {
display: initial !important;
width: auto !important;
margin: 05px00!important;
}
.glyphicon.spinning {
animation: spin 1s infinite linear;
-webkit-animation: spin2 1s infinite linear;
}
@keyframes spin {
from {
transform: scale(1) rotate(0deg);
}
to {
transform: scale(1) rotate(360deg);
}
}
@-webkit-keyframes spin2 {
from {
-webkit-transform: rotate(0deg);
}
to {
-webkit-transform: rotate(360deg);
}
}
<scriptsrc="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script><divng-app="formDemo"ng-controller="LocationFormCtrl"><div><buttontype="submit"class="btn btn-primary"ng-click="search()"><spanng-show="test"><iclass="glyphicon glyphicon-refresh spinning"></i></span>
{{ searchButtonText }}
</button></div></div>
Post a Comment for "How To Add A Spinner While Loading The Content In Angularjs?"