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.

Reply via email to