Я использую Angular с Firebase и теперь застрял с ошибкой при попытке заставить фабрику работать с фильтром.
app.factory('itemsFactory', ["$scope", '$rootScope', "$firebase", "simpleLogin",
function($scope, $rootScope, $firebase, simpleLogin) {
var ref = new Firebase("https://------.firebaseio.com/");
var items = $scope.items
$scope.items = [];
var sync = $firebase(ref);
$scope.items = sync.$asArray();
$rootScope.auth = simpleLogin;
return items;
}]);
app.filter('orderObjectBy',['itemsFactory', function (itemsFactory) {
return function (items) {
var filtered = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (item.hot) {
filtered.push(item);
}
};
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (!item.hot) {
filtered.push(item);
}
};
return filtered;
};
}]);
Это связанный HTML:
< tr ng-repeat="item in items | orderObjectBy:'hot' track by $index">
Вот что я получил в консоли:
ngRepeat: элемент в элементах | orderObjectBy: "горячее" отслеживание по $index copyProvider%20%3C-%20%24scope%20%3C-%itemsFactory%20%3C-%orderObjectByFilter при ошибке (собственный)
Кажется, я напортачил с внедрением зависимостей. Но как правильно это сделать?
item in items | filter:{hot:true}
или (что еще лучше) не извлекать только горячие элементы из Firebase (например, установив актуальность элемента в качестве его приоритета)? - person Frank van Puffelen   schedule 13.10.2014item in items | filter:{hot:true}
, а затемitem in items | filter:{hot:false}
. Или: установите горячность в качестве приоритета для элементов и позвольте Firebase вернуть их в том порядке, в котором вы хотите. - person Frank van Puffelen   schedule 13.10.2014ng-repeat="item in items track by $id | orderObjectBy:'hot'"
. Обратите внимание, что отслеживание идет перед фильтром, и, кроме того, мы отслеживаем по $id (уникальный), а не по $index (подвижный). - person Kato   schedule 14.10.2014filter
, должен быть явным признаком того, что сопоставление неверно. Вероятно, его можно заставить работать, но почему бы вам не использовать механизм упорядочения Firebase? - person Frank van Puffelen   schedule 14.10.2014