让此过滤器工作有问题。
$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并且第一个图像被赋予sortOrder为1并从那里递增。
这可能是我对$ filter的误解,但$scope.images = $filter('orderBy')($scope.images,'sortOrder');
并没有根据sortOrder命令我的$ scope.images。
由于
答案 0 :(得分:39)
我为您创建了一个演示,希望您可以比较代码并找出问题。
我猜你可能会忘记注入$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');
}
}
}
的 Working Demo 强>