Using service.
Here we use three methods for login, logout, register and getCurrentUser.
Be sure to open the Email and Password configuration on Forge:
login.tmpl.html
Login From
login.js
/** * Created by Answer1215 on 11/10/2014. */var login = angular.module('login', ['firebase']);app.constant('FIREBASE_URI', 'https://zhentiw-angular-fire.firebaseio.com/');login.controller('LoginCtrl', ['$scope', '$firebaseSimpleLogin', 'FIREBASE_URI', function($scope, $firebaseSimpleLogin, FIREBASE_URI){ $scope.loginService = $firebaseSimpleLogin(new Firebase(FIREBASE_URI)); $scope.newUser = {email: '', password: ''}; $scope.currentUser = null; $scope.autoLogin = function(){ $scope.loginService.$getCurrentUser() .then(function(user){ $scope.currentUser = user; }); }; $scope.autoLogin(); $scope.login = function(email, password){ $scope.loginService.$login('password', {email: email, password: password}) .then(function(user){ $scope.currentUser = user; $scope.resetForm(); }) }; $scope.register = function(email, password){ $scope.loginService.$createUser(email, password) .then(function(user){ $scope.currentUser = user; $scope.resetForm(); }); }; $scope.logout = function(){ $scope.loginService.$logout(); $scope.currentUser = null; } $scope.resetForm = function(){ $scope.newUser = {email: '', password: ''}; }}]);
app.js
/** * Created by Answer1215 on 11/9/2014. */var app = angular.module('app', ['ui.router','firebase', 'oc.lazyLoad']);app.constant('FIREBASE_URI', 'https://zhentiw-angular-fire.firebaseio.com/');app.config(function($stateProvider){ $stateProvider .state('login', { url: '/login', templateUrl: 'public/login.tmpl.html', controller: 'LoginCtrl', resolve: { 'login@': function($ocLazyLoad){ return $ocLazyLoad.load( { name: "login", //module name is "store" files: ["public/js/login.js", 'bower_components/firebase-simple-login/firebase-simple-login.js'] } ) } }});});app.controller('LoginCtrl', function(){});app.controller('MainCtrl', ['$scope', 'ItemsService', function ($scope, ItemsService) { $scope.newItem = { name: '', description: '', count: 0 }; $scope.currentItem = null; $scope.isUpdated = false; $scope.items = ItemsService.getItems(); $scope.items.$on('change', function(){ if(!$scope.isUpdated){ return;} console.log("ITEMS CHANGE"); }); $scope.items.$on('loaded', function(){ console.log("ITEMS LOADED"); }); //Deattach the change event from the items //$scope.items.$off('change'); $scope.addItem = function () { ItemsService.addItem(angular.copy($scope.newItem)); $scope.newItem = { name: '', description: '', count: 0 }; }; $scope.updateItem = function (id){ $scope.isUpdated = true; ItemsService.updateItem(id); }; $scope.removeItem = function (id) { ItemsService.removeItem(id); };}]);app.factory('ItemsService', ['$firebase', 'FIREBASE_URI', function ($firebase, FIREBASE_URI) { var ref = new Firebase(FIREBASE_URI); var items = $firebase(ref); var getItems = function () { return items; }; var addItem = function (item) { items.$add(item); }; var updateItem = function (id) { items.$save(id); }; var removeItem = function (id) { items.$remove(id); }; return { getItems: getItems, addItem: addItem, updateItem: updateItem, removeItem: removeItem }}]);
index.html
Angular Firebase { {items | json}}
Name Description Count Remove Add Item