// this will be much more efficient than $watch() app.factory('FilteredArray', function($firebaseArray) { function FilteredArray(ref, filterFn) { this.filterFn = filterFn; return $firebaseArray.call(this, ref); } FilteredArray.prototype.$$added = function(snap) { var rec = $firebaseArray.prototype.$$added.call(this, snap); if( !this.filterFn || this.filterFn(rec) ) { return rec; } }; return $firebaseArray.$extend(FilteredArray); }); app.controller('...', function($scope, FilteredArray) { var ref = new Firebase('https://kato-books.firebaseio.com/'); $scope.data = FilteredArray(ref, function(rec) { return rec.author !== 'Stephen King'; }) });