basics
Before AngularJS, web-apps worked like....
Why AngularJS
Traditional application
Page reload!
Single Page application
No page reload!
What is AngularJS
AngularJS is:
A JavaScript Framework for Single Page Applications.
Why use AngularJS:
Let's you build complex Single Page Applications in a very easy way. It adds a lot of features to the DOM, so you are able to create interaction between data and user,
with re-usable components.
What can you build with AngularJS:
With AngularJS you can build anything you can imagine!
AngularJS is Concepts
- Scope
- Service/Factory
- Controller
- Directives
- Filter
AngularJS -Scope
The scope is where the data lives in AngularJS. It behaves just like in normal JavaScript.
$rootscope
Is the global scope in AngularJS
$scope
Is the local scope of an AngularJS controller, directive etc.
AngularJS - Service/Factory
Re-usable business logic for the data.
You can use a service in an Angular controller, directive, filter etc.
The difference between a Service and Factory is very small. Read the explanation here: Service VS Factory
'use strict';
/**
* Array service
*/
angular.module('angularApp')
.service('arrayService', function() {
function swapArray(tempArray, newArray, indexA, indexB) {
var temp = tempArray[indexA];
tempArray[indexA] = tempArray[indexB];
tempArray[indexB] = temp;
newArray = tempArray;
return newArray;
}
this.moveUpInArray = function(data, arrayIndex, callback) {
var newIndex = arrayIndex - 1;
var newArray = swapArray(data, data, arrayIndex, newIndex);
if (newArray) {
callback(newArray);
}
};
this.moveDownInArray = function(data, arrayIndex, callback) {
var newIndex = arrayIndex + 1;
var newArray = swapArray(data, data, arrayIndex, newIndex);
if (newArray) {
console.log('newArray: ', newArray);
callback(newArray);
}
};
});
AngularJS -Controller
Business logic for the view.
Can include functionality like:
- Show/hiding components
- Calling services
- Creating scope for the view
- Will be used by the router
'use strict';
/**
* categoryNew controller of the angularApp
*/
angular.module('angularApp')
.controller('categoryNew',
function ($scope, $state, currentUser, CategoriesFactory) {
$scope.page = {
title: 'New categorie',
subtitle: 'checkout the restaurants...'
};
$scope.categories = new CategoriesFactory();
$scope.currentUser = currentUser;
$scope.createNewCategory = function() {
console.log('products: ', $scope.categories);
$scope.categories.restaurantID = $scope.currentUser.id;
$scope.categories.$addNew({}, function(data) {
// it worked!
$state.go('categories.list');
}, function(error) {
console.error('Error: ', error.data.errors);
});
};
});
AngularJS -Directives
Custom HTML elements & attributes.
Directives are the biggest power of AngularJS.
Directives help you build re-usable custom HTML elements. These directive's can include for example a Google maps, with search functionality. Or a special button.
'use strict';
/**
* Special button directive
*/
angular.module('angularApp')
.directive('specialButton', function () {
return {
restrict: 'A',
link: function(scope, element, attrs) {
var activatedClass = 'btn-activated';
var status = attrs.activateButton;
var activate = function() {
element.addClass(activatedClass);
setTimeout(function() {
element.removeClass(activatedClass);
}, 1000 );
};
element.on('click', function() {
if (!element.hasClass(activatedClass) && status === 'success') {
element.addClass('btn-activated-success');
setTimeout(function() {
element.removeClass('btn-activated-success');
}, 1000 );
} else if (!element.hasClass(activatedClass) && status === 'error') {
element.addClass('btn-activated-error');
setTimeout(function() {
element.removeClass('btn-activated-error');
}, 1000 );
} else if (!element.hasClass(activatedClass)) {
activate();
}
});
}
};
});
AngularJS -Filters
With filter you add logic to expression's.
In the HTML you will find {{expressions}} to output the data.
If you want to format your expression, for example a date, you add it to your {{expression | date}} with a pipe.
AngularJS
Angular basics
By Raymon Schouwenaar
Angular basics
- 1,959