/** * Created by Answer1215 on 11/9/2014. */ var app = angular.module('app', ['firebase']); app.constant('FIREBASE_URI', 'https://zhentiw-angular-fire.firebaseio.com/'); 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 } }]);
You can lisisten to the 'loaded', 'chane' events by using
$on('loaded', function(){...}).
You can deattache the events by using
$off() //unattach all events
$off('loaded') //unattach only loaded event