The given link to orderByPriority (https://www.firebase.com/docs/web/libraries/angular/api.html#orderbypriority) gives not any info on orderByPriority. Has this filter disappeared? What is the new way of doing this?
Mad On Wednesday, February 19, 2014 at 12:11:05 PM UTC+1, Marc B wrote: > > This is probably a bug in AngularFire: > > problem: > The orderByPriority filter when applied in JS code does not filter a > firebase object to an array containing just FB objects. The filter returns > the same FB object passed in. The AngularFire docs > <https://www.firebase.com/docs/angular/reference.html#orderbypriority> > say this about it: > > The orderByPriority filter is provided by AngularFire to convert an > object returned by $firebase into an array. The objects in the array are > ordered by priority (as defined in Firebase). Additionally, each object in > the array will have a $id property defined on it, which will correspond > to the key name for that object. > > This is my code: > > ref= $firebase(new Firebase(url)); > console.log(ref); > $scope.todos = $filter("orderByPriority")(ref); > //filter FB object to array > console.log($scope.todos); > > //FireBug console: > > Object { $bind=function(), $add=function(), $save=function(), more...} > Object { $bind=function(), $add=function(), $save=function(), more...} > > >>>>>>>>>>>>>>>>>>>>>>>>>>> > > When the orderByPriority filter is not applied in the controller > butinstead applied in a view the data objects _do_ have the $id property > injected: > > //retrieve FB reference in controller: > > $scope.todos = $firebase(new Firebase(url)); > > > //display the items in view: > > <ul id="todoList" ng-cloak> > <li ng-repeat="todo in todos | orderByPriority"> > <span ng-class="{'fa fa-check > pointer':!todo.completed}" ng-click="completeTodo(todo)"></span> > <span ng-bind="todo.title" data-ref="{{todo.$id}}" > ng-class="{strike:todo.completed}" ></span> > [....] > > > // button to remove items > > <button ng-click="removeCompleted()" >Verwijder > voltooid</button> > > > // function removeCompleted() called by buttonclick > > $scope.removeCompleted = function(){ > ng.forEach($scope.todos, > function(todo){ > if(typeof todo != "function" && > todo.completed){ > console.log(todo); > [...] > } > > > // output in FireBug console: > > Object { completed=true, title="444444", $id="-JG6JefXOPu_EZjkdRiq", > more...} > > so it looks like the $id object is injected in FB data item _only_ when > the orderByPriority filter is applied in the view. When applied in > controller orderByPriority filter has no effect... > > Marc > -- You received this message because you are subscribed to the Google Groups "AngularJS" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/angular. For more options, visit https://groups.google.com/d/optout.
