让这个过滤器工作有问题。
$scope.imgCollection.then(function (images) { $scope.images = images.thisGal_images; if ($scope.images[0].order == '0') { console.log('orgName'); $scope.images = $filter('orderBy')($scope.images,'orgName'); } else { console.log('sort order'); $scope.images = $filter('orderBy')($scope.images,'sortOrder'); console.log($scope.images); } });
$ scope.images从数据库返回图像列表。在初始上传时,sortOrder列填充“0”,因为它们可以通过ui:sortable进行排序。所以在初始视图下,我将文件名的排序顺序。在初始视图之后,DB被写入,并且第一个图像被赋予1的sortOrder并且从那里递增。
这可能是我对$ filter的误解,但是$ scope.images = $ filter(‘orderBy’)($ scope.images,’sortOrder’);不是根据sortOrder命令我的$ scope.images。
谢谢
我为您创建了一个演示,希望您可以比较代码并找出问题。
我想你可能会忘记注入$ filter模块。请看看演示。
<div ng-app="myApp" ng-controller="ctrl"> <div ng-repeat="image in images">{{image}}</div> <button ng-click="order('0')">By orgName</button> <button ng-click="order('1')">By sortOrder</button> </div> var app = angular.module('myApp',[]); function ctrl($scope,$filter) { $scope.images = [{ orgName: 'B',sortOrder: 111 },{ orgName: 'A',sortOrder: 12 },{ orgName: 'D',sortOrder: 13 },{ orgName: 'C',sortOrder: 14 }]; $scope.order = function (order) { if (order == '0') { $scope.images = $filter('orderBy')($scope.images,'orgName'); } else { $scope.images = $filter('orderBy')($scope.images,'sortOrder'); } } }