Wednesday 15 August 2012

angularjs - Moving items in a Firebase Array -



angularjs - Moving items in a Firebase Array -

i have been playing around firebase api , have nail bit of wall.

the problem i'm trying move item or downwards array can't seem figure out how in firebase api.

here controller

angular.module('acetrainingapp') .controller('admincontroller',['$scope','firebaseservice', function ($scope, firebaseservice) { $scope.posts = firebaseservice.getposts(); $scope.localposts = $scope.posts; //is right?? $scope.newpost = {name: '', body: ''}; $scope.remove = function (id) { firebaseservice.removepost(id); }; $scope.updatepost = function (id) { firebaseservice.updatepost(id); $scope.newpost = {name: '', body: ''}; }; $scope.addpost = function() { firebaseservice.addpost(angular.copy($scope.newpost)); }; //only trying movedown working first // $scope.moveup = function(post) { // var crntpos = $scope.posts.indexof(post); // if (crntpos > 0) { // $scope.posts.splice(crntpos, 1); // $scope.posts.splice(crntpos - 1, 0, post); // } // }; $scope.movedown = function(post) { var crntpos = $scope.localposts.indexof(post); if (crntpos < $scope.localposts.length) { $scope.localposts.splice(crntpos, 1); $scope.localposts.splice(crntpos + 1, 0, post); firebaseservice.updateallposts($scope.localposts); } }; }]);

and here service

angular.module('acetrainingapp').factory('firebaseservice', [ '$firebase', function($firebase){ var ref = new firebase('https://acetrainingsolutions.firebaseio.com/'); var posts = $firebase(ref).$asarray(); var getposts = function(){ homecoming posts; }; var removepost = function(id){ posts.$remove(id); }; var updatepost = function(post){ posts.$save(post); }; var addpost = function(index){ posts.$add(index); }; homecoming { getposts: getposts, removepost: removepost, updatepost: updatepost, addpost: addpost }; }]);

html

<li ng-repeat="post in localposts track $index"> <input type="text" ng-model="post.name" ng-blur="updatepost($index)"> <input type="text" ng-model="post.body" ng-blur="updatepost($index)"> <button type="button" class="close space" ng-click="movedown(post)">&downarrow;</button> <button type="button" class="close space" ng-click="moveup(post)">&uparrow;</button> <button type="button" class="close space" ng-click="remove($index)">&times;</button> </li>

the problem splice method works on view mentioned in firebase docs. can help me prepare moveup , movedown functions?

cheers

it turns out because array contained objects keys containing '$', update method wouldn't work. update method incorrect.

firebaseservice

var updatepost = function(id){ posts.$save(id); }; var updateallposts = function(posts){ ref.set(posts); };

admincontroller

$scope.movedown = function(post) { var localposts = []; var crntpos = $scope.posts.indexof(post); if (crntpos < $scope.posts.length) { $scope.posts.splice(crntpos, 1); $scope.posts.splice(crntpos + 1, 0, post); for(var = 0; < $scope.posts.length; i++){ var obj = { name: $scope.posts[i].name, body: $scope.posts[i].body }; localposts.push(obj); } firebaseservice.updateallposts(localposts); } };

arrays angularjs firebase sync angularfire

No comments:

Post a Comment