Angularjs:控制器中的$filter

前端之家收集整理的这篇文章主要介绍了Angularjs:控制器中的$filter前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
让这个过滤器工作有问题。
$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');
        }
    }
}

Working Demo

猜你在找的Angularjs相关文章