Created
November 10, 2014 14:34
Checkbox Persistance Directive with Firebase
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//html | |
/* | |
<tasted beer="{{beer.$id}}" /> | |
*/ | |
var TastedDirective = angular.module('TastedDirective', []); | |
TastedDirective | |
.directive( 'tasted', function($rootScope, $q, TastedFactory) { | |
return { | |
restrict: 'AE', | |
replace: true, | |
template: '<input type="checkbox" ng-model="result" ng-change="tick()" />', | |
controller: 'TastedController', | |
scope: { | |
beer: '@beer', | |
result: '@result' | |
}, | |
link: function(scope, elem, attrs) { | |
var beer = scope.beer; | |
TastedFactory.result(beer).then(function(data){ | |
console.log('then',data); | |
scope.result = data; | |
}); | |
} | |
} | |
}) | |
.controller( 'TastedController', function($rootScope, $scope, $q, $firebase){ | |
$scope.tick = function(){ | |
var firebase_url = 'https://brilliant-fire-7870.firebaseio.com/'; | |
var tasted = $scope.result; | |
var beerID = $scope.beer; | |
var currentUser = $rootScope.firebaseUser.uid; | |
var dataObject = { tasted: tasted }; | |
var endpoint = new Firebase(firebase_url + 'tasting/' + currentUser + '/' + beerID); | |
endpoint.set(dataObject); | |
} | |
}); | |
App.factory("TastedFactory", function($rootScope, $q, $http, $firebase) { | |
var factory = {}; | |
var helper = {}; | |
var firebase_url = 'https://brilliant-fire-7870.firebaseio.com/'; | |
factory.result = function (beerID) { | |
var currentUser = $rootScope.firebaseUser.uid; | |
var endpoint = new Firebase(firebase_url + 'tasting/' + currentUser + '/' + beerID); | |
var deferred = $q.defer(); | |
endpoint.once('value', function(snapshot){ | |
var foo = snapshot.val() || false; | |
if(foo.tasted){ | |
console.log('tasted'); | |
deferred.resolve(true); | |
} | |
else { | |
console.log('not tasted'); | |
deferred.resolve(false); | |
} | |
}); | |
return deferred.promise; | |
}; | |
return factory; | |
}); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment